gpt4 book ai didi

java - 使用 RSASSA-PKCS1-V1_5 使用私钥对有效负载进行数字签名

转载 作者:太空宇宙 更新时间:2023-11-04 11:28:09 28 4
gpt4 key购买 nike

我正在尝试插入并实现以下语句。

Digitally sign the payload with Private Key using RSASSA-PKCS1-V1_5 signature scheme and SHA1 cryptographic hash function.

注意:请参阅 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;

}

我将不胜感激任何提示,如果适用,如果我使用第二个选项,我如何验证签名。

谢谢

最佳答案

第一个选项有意义,第二个选项意义不大;您需要第一个选项:仅使用 SHA1withRSA

计算哈希值是签名生成操作的一部分。签名生成操作允许您配置特定哈希的签名操作,例如SHA-1 或 SHA-256。这就是您指定 SHA1withRSA 时所做的事情。它使用 PKCS#1 v1.5 填充是隐含的,因为在他们编写该函数时,只有一种方案被广泛标准化。

在第二段代码中,您对签名进行哈希处理。这很有趣,但它不允许您使用公钥验证签名。这就是您首先生成签名的原因。请注意,如果您使用不同的不确定性签名方案(例如 PSS),您每次都会得到不同的哈希值,从而使您的第二个方案完全无用。

<小时/>

请注意,一般来说 SHA-1 不再被认为是安全的,签名生成尤其如此。只有当签名算法(以及底层哈希算法)的输入受到限制时,它仍然被认为是安全的。

关于java - 使用 RSASSA-PKCS1-V1_5 使用私钥对有效负载进行数字签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44130060/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com