gpt4 book ai didi

java - 使用 javax.crypto.Cipher 与 java.security.Signature 签名

转载 作者:行者123 更新时间:2023-11-29 04:07:19 26 4
gpt4 key购买 nike

我正在处理一些需要更新以使用其他加密提供商的旧代码。我不是 Java 专家。我试图了解使用 javax.crypto.Cipherjava.security.Signature 对哈希进行签名之间的区别。

现有代码看起来与此类似:

  Cipher cipher = Cipher.getInstance(CFG_ALGO);
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] signature = cipher.doFinal(payload);

我收到的使用新提供程序的示例片段如下所示:

  final Signature sign = Signature.getInstance("RSA", SIGNATURE_PROVIDER);
sign.initSign(keystore.getPrivateKey(keyName, keyPass));
sign.update(data);
byte[] signature = sign.sign();

如果我为两者使用相同的提供商,两者之间有什么区别吗?一种方式通常优于另一种方式吗?

最佳答案

Cipher用于加解密; Signature用于签名和验证。

Cipher 在某些情况下也可以在签名上下文中使用的唯一原因是某些签名方案通过使用私钥加密指纹来工作,以便其他有权访问相应公钥的人可以解密数据并进行验证。

不过,并非所有签名方案都是如此,例如DSA 和 ECDSA 的工作方式完全不同。

即使您目前只使用 RSA 签名,因此,为了以后的可维护性,您也应该使用 Signature

关于java - 使用 javax.crypto.Cipher 与 java.security.Signature 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57772858/

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