java KeyPairGenerator未生成随机密钥
我正在用KeyPairGenerator生成RSA密钥对,我注意到它一直在生成完全匹配的密钥,而不是随机生成的密钥?也许有人有ide为什么会这样
我的代码现在看起来像这样:
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和我使用的提供商的问题。看看关于约阿希姆·绍尔回复的评论
# 1 楼答案
运行稍微修改过的代码版本(以便编译)效果很好(即,在多次运行时生成不同的键:
您使用的提供商是否可能是。。。行为不端?
provider.getName()
的值是多少# 2 楼答案
我也面临同样的问题。对我有效的代码是:
现在打印出来,用以下方法检查钥匙是否不同:
SecureRandom生成器在本例中使用给定的算法(SHA1PRNG)和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
# 3 楼答案
你初始化了吗。根据here的说法,它应该看起来像: