java加密技術(shù) 非對稱加密算法rsa

java加密技術(shù) 非對稱加密算法rsa

ID:796100

大?。?30.03 KB

頁數(shù):24頁

時間:2017-09-05

java加密技術(shù) 非對稱加密算法rsa_第1頁
java加密技術(shù) 非對稱加密算法rsa_第2頁
java加密技術(shù) 非對稱加密算法rsa_第3頁
java加密技術(shù) 非對稱加密算法rsa_第4頁
java加密技術(shù) 非對稱加密算法rsa_第5頁
資源描述:

《java加密技術(shù) 非對稱加密算法rsa》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、Java加密技術(shù)接下來我們介紹典型的非對稱加密算法——RSARSA這種算法1978年就出現(xiàn)了,它是第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。它易于理解和操作,也很流行。算法的名字以發(fā)明者的名字命名:RonRivest,AdiShamir和LeonardAdleman。這種加密算法的特點主要是密鑰的變化,上文我們看到DES只有一個密鑰。相當(dāng)于只有一把鑰匙,如果這把鑰匙丟了,數(shù)據(jù)也就不安全了。RSA同時有兩把鑰匙,公鑰與私鑰。同時支持?jǐn)?shù)字簽名。數(shù)字簽名的意義在于,對傳輸過來的數(shù)據(jù)進行校驗。確保數(shù)據(jù)在傳輸工程中不被修改。流程分析:甲方構(gòu)建密

2、鑰對兒,將公鑰公布給乙方,將私鑰保留。甲方使用私鑰加密數(shù)據(jù),然后用私鑰對加密后的數(shù)據(jù)簽名,發(fā)送給乙方簽名以及加密后的數(shù)據(jù);乙方使用公鑰、簽名來驗證待解密數(shù)據(jù)是否有效,如果有效使用公鑰對數(shù)據(jù)解密。乙方使用公鑰加密數(shù)據(jù),向甲方發(fā)送經(jīng)過加密后的數(shù)據(jù);甲方獲得加密數(shù)據(jù),通過私鑰解密。按如上步驟給出序列圖,如下:按如上步驟給出序列圖,如下:1.2.1.Java代碼importjava.security.Key;importjava.security.KeyFactory;importjava.security.KeyPair;importjava.

3、security.KeyPairGenerator;importjava.security.PrivateKey;importjava.security.PublicKey;importjava.security.Signature;importjava.security.interfaces.RSAPrivateKey;importjava.security.interfaces.RSAPublicKey;importjava.security.spec.PKCS8EncodedKeySpec;importjava.security.s

4、pec.X509EncodedKeySpec;importjava.util.HashMap;importjava.util.Map;importjavax.crypto.Cipher;/***RSA安全編碼組件**@author梁棟*@version1.0*@since1.0*/publicabstractclassRSACoderextendsCoder{publicstaticfinalStringKEY_ALGORITHM="RSA";publicstaticfinalStringSIGNATURE_ALGORITHM="MD5w

5、ithRSA";privatestaticfinalStringPUBLIC_KEY="RSAPublicKey";privatestaticfinalStringPRIVATE_KEY="RSAPrivateKey";/***用私鑰對信息生成數(shù)字簽名**@paramdata*加密數(shù)據(jù)*@paramprivateKey*私鑰**@return*@throwsException*/publicstaticStringsign(byte[]data,StringprivateKey)throwsException{//解密由base64編碼的

6、私鑰byte[]keyBytes=decryptBASE64(privateKey);//構(gòu)造PKCS8EncodedKeySpec對象PKCS8EncodedKeySpecpkcs8KeySpec=newPKCS8EncodedKeySpec(keyBytes);//KEY_ALGORITHM指定的加密算法KeyFactorykeyFactory=KeyFactory.getInstance(KEY_ALGORITHM);//取私鑰匙對象PrivateKeypriKey=keyFactory.generatePrivate(pkcs8K

7、eySpec);//用私鑰對信息生成數(shù)字簽名Signaturesignature=Signature.getInstance(SIGNATURE_ALGORITHM);signature.initSign(priKey);signature.update(data);returnencryptBASE64(signature.sign());}/***校驗數(shù)字簽名**@paramdata*加密數(shù)據(jù)*@parampublicKey*公鑰*@paramsign*數(shù)字簽名**@return校驗成功返回true失敗返回false*@throwsE

8、xception**/publicstaticbooleanverify(byte[]data,StringpublicKey,Stringsign)throwsException{//解密由

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。