【发布时间】:2017-10-23 03:01:54
【问题描述】:
我正在尝试插入并实现以下语句。
使用私钥对有效负载进行数字签名 RSASSA-PKCS1-V1_5 签名方案和 SHA1 加密哈希函数。
注意:请参阅 PKCS #1 v2.1:PKCS1-v1.5 签名和加密方案的 RSA 加密标准规范。
当它说“和”sha1 哈希函数时我很困惑,下面是采用的代码,我不确定它是否正确的解释
public String getSignature(String _plainTextMessage,PrivateKey privateKey){
try {
Signature signer = Signature.getInstance("SHA1withRSA");
signer.initSign(privateKey);
signer.update(_plainTextMessage.getBytes());
byte[] signature = signer.sign();
return new BASE64Encoder().encode(signature);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (SignatureException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
或者我需要像下面这样包含 MessageDiget
public String getSignature(String _plainTextMessage,PrivateKey privateKey){
try {
Signature signer = Signature.getInstance("SHA1withRSA");
signer.initSign(privateKey);
signer.update(_plainTextMessage.getBytes());
byte[] signature = signer.sign();
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
byte[] digest = sha1.digest(signature);
return new BASE64Encoder().encode(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (SignatureException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
我会很感激任何提示,如果适用,如果我使用第二个选项,我该如何验证签名。
谢谢
【问题讨论】:
标签: java hash cryptography digital-signature sha1