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

Java 加密技術(六):DSA 數字簽名算法——非對稱加密的高級驗證實現

     編輯:Java 相關知識

DSA(Digital Signature Algorithm)是 Schnorr 和 ElGamal 簽名算法變種,被 NIST 定為 DSS 標準。區別於純加密,DSA 引入數字簽名:私鑰簽名、公鑰驗證,校驗數據傳輸完整性。若數據與簽名不匹配則驗證失敗。數字簽名是單向加密的升級。

DSACoder 實現

繼承 Coder,ALGORITHM = "DSA",默認密鑰長度 1024 位(512-1024,64 位倍數)。核心方法:

  • sign(byte[] data, String privateKey):私鑰生成數字簽名(Signature.initSign(priKey))
  • verify(byte[] data, String publicKey, String sign):公鑰驗證簽名(Signature.initVerify(pubKey))
  • initKey(seed):KeyPairGenerator + SecureRandom 生成密鑰對
  • getPrivateKey/getPublicKey:BASE64 編碼輸出

測試驗證

DSACoderTest:構建密鑰、輸出公私鑰、簽名「abc」→ 驗證簽名 → 狀態 true。控制台輸出 1024 位 DSA 公私鑰 BASE64 及簽名值,驗證成功。

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