亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

利用SATSA高級API進行加解密

系統(tǒng) 1805 0

15.2.3 利用SATSA高級API進行加解密

除了SATSA定義的兩個可選包可用于連接加密硬件外,還有兩個包能夠實現(xiàn)如今的許多移動應用程序所需的常見加密操作。SATSA-CRYPTO包 包含java.security包、java.security.spec包、javax.crypto包以及javax.crypto.spec包的一 個子集,提供了用于公私鑰管理、消息摘要、簽名驗證以及數(shù)字加密的API。SATSA-PKI安全包包含javax.microedition.pki和 javax.microedition. securityservice,定義了支持基本用戶證書管理的類。

使用SATSA-CRYPTO API,讓我們看一下兩個常見操作,在應用程序開發(fā)期間可能會用到它們。這兩個操作是:創(chuàng)建消息摘要和加密(或解密)消息。

1. 使用SATSA-CRYPTO API創(chuàng)建消息摘要

移動應用程序可能需要執(zhí)行的最常見的密碼操作就是創(chuàng)建消息摘要。如今,許多Web服務API使用消息摘要作為一種阻止篡改Web服務請求或響應的有 效負荷(payload)的方式;消息摘要可以是HTTP的頭部或Web服務的參數(shù),也可以簡單地附加到Web服務頭部之后。這就像使用SATSA- CRYPTO API一樣簡單,如代碼清單15-3所示。

代碼清單15-3 創(chuàng)建消息摘要

利用SATSA高級API進行加解密 ?

SATSA-CRYPTO API提供了MessageDigest類,該類提供了一個用于創(chuàng)建消息摘要算法實現(xiàn)的靜態(tài)工廠,以及一個該消息摘要算法的一個接口。通過調用 MessageDigest的getInstance函數(shù)并傳入想要其實現(xiàn)的摘要函數(shù)("MD5"或"SHA-1")的名稱,可以獲得 MessageDigest的一個具體實例。生成的MessageDigest對象調用其update方法來使用你傳給它的字節(jié)數(shù)組,當調用該對象的 digest方法時,它將提供生成的消息摘要并重置算法。

這段代碼假設你擁有一個Web請求,并且想在webRequest中為該請求生成一個MD5摘要。由于MessageDigest接口處理字節(jié)數(shù) 組,所以這段代碼首先獲取Web請求的字節(jié)數(shù)組表現(xiàn)形式,然后聲明變量來包含生成的摘要。完成之后,將生成MD5 MessageDigest實現(xiàn)的一個實例,并調用md.update,將組成webRequest的字節(jié)傳遞給它。對于較長的文檔,可以多次調用 md.update。當使用update將消息提供給MessageDigest實例之后,代碼將要求該實例使用digest方法計算摘要,這會使用一個 字節(jié)數(shù)組來存儲輸出和數(shù)組中的字節(jié)數(shù)。

SATSA-CRYPTO提供的MessageDigest實現(xiàn)通常包括MD5和SHA-1算法,但是無法保證每種算法都可用。因此,應用程序應該準備好處理NoSuchAlgorithmExecption。

也可以使用SATSA-CRYPTO API來驗證消息摘要,創(chuàng)建源文檔的一個消息摘要并將其與提供的消息摘要進行比較。沒有用于比較消息摘要的API;可以對每個摘要中的字節(jié)進行循環(huán),并逐字節(jié)進行比較,以確定每個消息摘要是否相等。

2. 使用SATSA-CRYPTO API加密和解密

在大多數(shù)環(huán)境下,只有在將數(shù)據(jù)從設備發(fā)送出并在網絡上傳輸時才對其進行加密。在這種情況下,HTTPS通常就能滿足數(shù)據(jù)安全需求了;有時還需要以一 種加密格式在將數(shù)據(jù)存儲在本地,或者使用除HTTPS之外的協(xié)議交換數(shù)據(jù)。SATSA-CRYPTO API提供了用于加密和解密數(shù)據(jù)的接口,但帶有一個局限性:盡管可以,采用公鑰(也稱為對稱)密碼算法加密使用SATSA-CRYPTO API的數(shù)據(jù),但是無法解密使用公鑰密碼算法加密的數(shù)據(jù)。

最好將密碼的SATSA-CRYPTO API想作一個接口,而不是一個具體實現(xiàn)。對于給定的目標,無法確切地知道將會遇到哪種密碼實現(xiàn);一種設備可能支持DES(Data Encryption Standard,數(shù)據(jù)加密標準)、RC4(Rivest Cipher 4)以及AES(Advanced Encryption Standard,高級加密標準),而另一種設備可能僅支持DES。無論支持哪種實現(xiàn),使用SATSA-CRYPTO密碼接口的一般方法都是一樣的。

(1) 以字節(jié)數(shù)組的形式生成想要加密的明文。

(2) 同樣以字節(jié)數(shù)組的形式生成要用于加密明文的密鑰。

(3) 生成期望的密碼實現(xiàn)的一個實例,這將是java.security.Cipher的一個實例。

(4) 初始化密碼。

(5) 使用Cipher's update方法逐步加密明文,或者使用Cipher's doFinal方法通過一步操作執(zhí)行加密。

你可能已經預料到,解密是加密的逆過程;指定密碼實現(xiàn)并指明應該在解密模式下使用它,而無須像步驟3中那樣指定一個密碼實現(xiàn)。傳遞加密的文本,而不是傳遞步驟5中的明文。考慮代碼清單15-4,其中演示了加密消息的過程。

代碼清單15-4 加密消息

利用SATSA高級API進行加解密 ?

這段代碼按照上面列出的每步算法編寫;尤其注意,當初始化Cipher實例時,使用ENCRYPT_MODE作為選定模式。解密將是加密的逆過程, 解密算法的代碼只需將相應參數(shù)的DECRYPT_MODE傳遞給init。運行此代碼之后,如果沒有異常,字節(jié)數(shù)組cipherTextBytes將包含 加密的文本。

各種密碼算法在處理輸入的方式上可能不盡相同;一些算法(比如DES)是塊密碼,它要求以大小均勻的塊的形式提供輸入,比如64字節(jié)的塊。當使用塊 密碼時,必須將輸入填充為與塊的邊界一致;更復雜的是,一些塊密碼還是非對稱的,也就是說輸入塊的大小與輸出塊的大小不同。其他密碼算法(比如RC4)都 是流密碼:它們獲取一個字節(jié)流(明文或加密的文本),然后進行加密或解密。當使用塊密碼時,一定要確保將所有塊都傳遞給了update和doFinal方 法。

當使用Cipher接口加密或解密時,可能會發(fā)生一些事情;針對各種事情,API會分別拋出以下異常。

當輸入未被正確填充或塊的大小錯誤時,API為塊密碼拋出BadPaddingException或Illegal- BlockSizeException。

當密碼算法使用了一個無效的密鑰時,API拋出InvalidKeyException。

當你嘗試在初始化消息之前,使用密碼算法對其加密或解密時,API拋出Illegal- StateException。

如果你試圖獲取一個不受支持的算法的Cipher實例,API將拋出NoSuchAlgorithmException。

注意? 在真實世界中,你不應該隨便將密碼算法的私鑰嵌入到源代碼或其他易于讀取的資源中,比如JAR文件的組成部分。惡意用戶可能通過反編譯應用程序或JAR找 到密鑰。相反,應該在分發(fā)時創(chuàng)建密鑰,每個應用程序使用不同的密鑰,并且僅適用安全的HTTP分發(fā)應用程序JAD。但是,這將意味著應用程序不能由 Java Verified Program的參與者進行簽名和驗證。也可以提供一個Web服務來安全地生成密鑰,并通過HTTPS傳遞給你的應用程序。

?

原文地址:http://book.51cto.com/art/200908/145122.htm[轉載]

利用SATSA高級API進行加解密


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 中国男女全黄大片一级 | 日韩精品一区二区三区乱码 | 日本久久99 | 中文字幕在线观看亚洲日韩 | 日日干夜夜爱 | 亚洲一二区视频 | 97免费视频免费视频 | 国产午夜精品久久理论片 | 婷婷在线免费观看 | 久草在线视频中文 | 精品无人区乱码1区2区 | 成人99国产精品一级毛片 | 奇米色视频 | 在线亚洲精品国产波多野结衣 | 爱爱视频网站免费 | 国产视频中文字幕 | 日韩精品欧美高清区 | 9191在线精品播放 | 操白嫩美女 | 搜索一级毛片 | 亚洲黄色高清 | 一级国产精品一级国产精品片 | a毛片免费观看 | 亚洲精品一二三区-久久 | 成人爽a毛片在线视频网站 成人爽视频 | 久久这里只有精品国产99 | 极品吹潮视频大喷潮tv | 狠狠色狠狠色综合久久第一次 | 日韩视频区| 91成人免费观看网站 | 韩国一级理黄论片 | 久久精品国产精品亚洲20 | 性欧美久久 | 国产精品欧美一区二区在线看 | 九九久久99| 色偷偷久久一区二区三区 | 天天操综合网 | 亚洲精品不卡视频 | 日本免费在线视频 | 操你妹影院 | 久草新免费|