简介:
【密码学 13 数字签名算法】对目标先进行消息摘要算法,得到的结果再进行RSA加密。
特点:
这种情况下的RSA往往是NoPadding 模式。保证每次的加密结果一致。
代码实现
public static String getSignature(String data) throws Exception {
PrivateKey privateKey = RSABase64.genPrivatekey();
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
signature.update(data.getBytes(StandardCharsets.UTF_8));
byte[] res=signature.sign();
ByteString of = ByteString.of(res);
returnof.base64();
};
public static boolean verifySignature (String data, String sign) throws Exception {PublicKey publicKey = RSABase64.genPublickey();
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initVerify(publicKey);
signature.update(data.getBytes(StandardCharsets.UTF_8));
returnsignature.verify(ByteString.decodeBase64(sign).toByteArray());
};
推荐阅读
- 密码学 14 CryptoJS
- 错误注入攻击总结(Fault Injection Attack)
- 密码学 12 AES和RSA 的结合
- 密码学 10 非对称加密算法
- 区块链|Zcash:工作原理
- 区块链|比特币钱包安全