RSASingature 算法基本概念
1.RSA签名算法概念
将RSA公钥密码算法按照数字签名的方式运用
1.1.RSA签名算法分类(JDK实现)
(1)MD(MD2withRSA,MD5withRSA)
(2)SHA(SHA1withRSA,SHA256withRSA,SHA384withRSA,SHA512withRSA)
2.RSA算法编程使用
1.签名(参数:数据源,私钥)
//实力化Signature
Signature signature = Signature.getInstance("MD5withRSA");
//初始化Signature
signature.initSign(privateKey);
//更新
signature.update(data) //data是加密数据(通过摘要算法截取一段固定长度的数据源)
//生成签名
byte[] sign = signature.sign();
2.验证(原始数据,公钥,签名值)
//实例化Signature
Signature signature = Signature.getInstance("MD5withRSA");
//初始化Signature
signature.initVerify(publicKey);
//更新
signature.update(data);
//验证
boolean isValid = signature.verify(sign);
2.DSASignature 算法基本概念
DSA签名算法实行就是RSA签名算法实现的简装版,仅支持SHA系列算法
2.2DSA签名算法分类(JDK实现)
SHA1withDSA
3.DSA算法编程使用
1.签名
//实例化Signature
Signature signature = Signature.getInstance("SHA1withDSA");
//初始化sign
signature.initSign(privateKey);
//更新
signature.update(data);
//生成签名
byte[] sign = signature.sign();
2.验证
//实例化Signature
Signature signature = Signature.getInstance("SHA1withDSA");
//初始化verify
signature.verify(publicKey);
//更新数据
signature.update(data);
//验证
boolean isValid = signature.verify(sign);