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课