我使用 KeyPairGenerator 生成 RSA key 对,我注意到它始终生成完全匹配的 key ,而不是应有的随 secret 钥?也许有人知道为什么会这样?
我的代码现在看起来像这样:
private static KeyPair generateKeyPair(Provider provider, int keySize) throws Exception
{
KeyPair keyPair = null;
/* get the eracom keystore - access to the adapter */
//KeyStore keyStore = KeyStore.getInstance("CRYPTOKI", provider.getName());
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", provider.getName());
keyPairGenerator.initialize(keySize);
keyPair = keyPairGenerator.generateKeyPair();
return keyPair;
}
问题已解决: 这是 HSM 和我使用的提供商的问题。看看 Joachim Sauer 回复的评论。
最佳答案
我也遇到过同样的问题。对我有用的代码是:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(1024,random);
KeyPair key = keyGen.generateKeyPair();
现在打印它们以检查 key 是否不同,使用:
System.out.println(key.getPrivate());
System.out.println(key.getPublic());
SecureRandom 生成器使用给定算法 (SHA1PRNG)(在本例中为 SUN)和 privider(在本例中为 SUN)创建一个新的随机数。您可以在这里找到更多信息:https://docs.oracle.com/javase/tutorial/security/apisign/step2.html 和API在这里: http://docs.oracle.com/javase/8/docs/api/java/security/SecureRandom.html
关于java - KeyPairGenerator 不生成随 secret 钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5352978/