java dsa加密与解密_Java DSA 加密 | 解密
Java DSA 加密 | 解密
什么是DSA ?
DSA (Digital Signature Algorithm) 是 Schnorr 和 ElGamal 簽名算法的變種,被美國 NIST 作為 DSS (DigitalSignature Standard)。 DSA 是基于整數有限域離散對數難題的。
簡單的說,這是一種更高級的驗證方式,用作數字簽名。不單單只有公鑰、私鑰,還有數字簽名。私鑰加密生成數字簽名,公鑰驗證數據及簽名,如果數據和簽名不匹配則認為驗證失敗。數字簽名的作用就是校驗數據在傳輸過程中不被修改,數字簽名,是單向加密的升級。
DSA 加密、解密代碼示例
public class DSAUtils {
public static void main(String[] args) throws Exception {
String data = "pangugle";
// 創建秘鑰生成器
KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
kpg.initialize(512);
KeyPair keypair = kpg.generateKeyPair();// 生成秘鑰對
DSAPublicKey publickey = (DSAPublicKey) keypair.getPublic();
DSAPrivateKey privatekey = (DSAPrivateKey) keypair.getPrivate();
// 簽名和驗證
// 簽名
Signature sign = Signature.getInstance("SHA1withDSA");
sign.initSign(privatekey);// 初始化私鑰,簽名只能是私鑰
sign.update(data.getBytes());// 更新簽名數據
byte[] b = sign.sign();// 簽名,返回簽名后的字節數組
// 驗證
sign.initVerify(publickey);// 初始化公鑰,驗證只能是公鑰
sign.update(data.getBytes());// 更新驗證的數據
boolean result = sign.verify(b);// 簽名和驗證一致返回true 不一致返回false
System.out.println(result);
}
}
運行結果為
true
總結
以上是生活随笔為你收集整理的java dsa加密与解密_Java DSA 加密 | 解密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 51单片机定时/计数器
- 下一篇: 扫雷JAVA课程设计报告感想,Java课