java - KeyPairGenerator 不生成随 secret 钥

标签 java rsa

我使用 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/

相关文章:

java - Libgdx 获取缩放的触摸位置

Java 主类在运行时重写属性文件

java - RSA 加密错误

c# - 如何使用带有 RSA 私钥的 RS256 对 JWT 进行签名

javascript - 在 Javascript 中验证 RSA 签名文件

java - 如何向 @XmlElementWrapper ArrayList 添加属性?

java - 为什么Java中的 boolean 值只接受真或假?为什么不是 1 或 0 呢?

java - 将所有依赖的jar文件存储在目录中

rsa - C++ 中有没有非常简单的 RSA 实现

golang,我可以使用 rsa key 创建 X509KeyPair 吗?