首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 加密技術(四):RSA 非對稱加密算法——雙向加密與數字簽名完整實戰

     編輯:Java 相關知識

RSA 1978 年問世,首個兼具數據加密與數字簽名的算法,易懂易用、廣泛流行。名稱源自三位發明者 Rivest、Shamir、Adleman。特點:雙鑰(公鑰/私鑰),支持數字簽名校驗傳輸完整性。

流程分析

  1. 甲方生成密鑰對,公鑰給乙方,私鑰自留
  2. 甲→乙:私鑰加密 + 私鑰簽名 → 發送密文與簽名;乙方公鑰驗證簽名 → 公鑰解密
  3. 乙→甲:公鑰加密 → 發送密文;甲方私鑰解密

序列圖展示三次交互(圖示)。

RSACoder 實現

繼承 Coder,KEY_ALGORITHM = "RSA",SIGNATURE_ALGORITHM = "MD5withRSA"。核心:

  • sign/verify:私鑰簽名 / 公鑰驗證(Signature)
  • encryptByPublicKey/decryptByPrivateKey:公鑰加密 / 私鑰解密
  • encryptByPrivateKey/decryptByPublicKey:私鑰加密 / 公鑰解密
  • initKey():KeyPairGenerator 1024 位生成密鑰對

測試驗證

RSACoderTest:

  1. test():公鑰加密「abc」→ 私鑰解密 → 一致
  2. testSign():私鑰加密「sign」→ 公鑰解密 → 一致;私鑰簽名 → 公鑰驗證 → 狀態 true

控制台輸出兩輪密鑰對、加解密過程及簽名 BASE64。總結:公鑰加密/私鑰解密完成乙→傳輸;私鑰加密/公鑰解密 + 簽名驗證完成甲→乙傳輸,構建完整數據交互閉環。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved