我正在用PKCS11机制实现函数-- CKM_RSA_PKCS和CKM_RSA_X_509。我知道这两种方法都是在Botan C++库中实现的,但我必须在Java中找到相应的工具。第二个问题是,两者有什么区别?
发布于 2013-02-22 18:14:50
CKM_RSA_PKCS
指用于PKCS#1加密和数字签名的PKCS#1 v1.5标准(参见RFC3447)。在Java中,它通常是RSA的默认选择。
Signature.getInstance()
Cipher.getInstance()
。CKM_RSA_X_509
是指教科书(或原始的) RSA算法,即不定义填充的算法。在这种情况下,您可以简单地将"RSA/None/NoPadding“传递给Cipher.getInstance()
。签名可以通过解密完成,而验证可以通过加密完成(后面是比较)。
不过,我将避免实现和使用原始RSA,除非您有特定的用例。PKCS#1v 1.5签名更安全。但是对于加密,我并不建议使用它们,因为它们都是不安全的。最好只依赖PKCS#1 OAEP (CKM_RSA_PKCS_OAEP
);为此,将“RSA/None/OAEPWithSHA1AndMGF1PING”传递给Cipher.getInstance()
。
https://stackoverflow.com/questions/15003113
复制相似问题