欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

利用SATSA高級API進行加解密

系統 1672 0

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

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

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

1. 使用SATSA-CRYPTO API創建消息摘要

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

代碼清單15-3 創建消息摘要

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

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

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

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

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

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

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

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

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

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

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

(4) 初始化密碼。

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

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

代碼清單15-4 加密消息

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

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

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

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

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

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

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

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

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

?

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

利用SATSA高級API進行加解密


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩成人网 | 精品国产第一国产综合精品 | 欧美一区二区三区视频 | 国产精品91久久久 | 99久久精品国产一区二区成人 | 免费jizz在线播放视频 | 日韩欧美在线观看视频 | 日韩天天干 | 日韩五月 | 欧美日韩一区二区在线视频播放 | 亚洲精品国产成人一区二区 | 天堂资源最新在线 | 色开心婷婷 | 国产成人在线视频 | 精品久久一二三区 | 日本在线精品 | 一区二区三区四区在线观看视频 | 黑人狂躁日本妞无码A片 | 91看点 | 久久亚洲一区二区 | 中文字幕亚洲精品 | 女人被狂躁视频免费网站 | 色综合网站在线 | 青娱乐免费 | 色综合久久天天综合绕观看 | 日日摸夜夜爽 | 色综合加勒比 | 亚洲一区二区三区久久久 | 日韩字幕无线乱码 | 日韩在线视频观看免费 | 天天操bb | 奇米奇米色 | 奇米狠狠色 | 一区二区三区四区不卡视频 | 在线中文字幕视频 | 国产色网址 | 国产二区三区在线播放 | 91视频这里只有精品 | 妈妈的朋友酷客影响 | 国产色网址 | 成人性生交A片免费看麻豆 色倩网站 |