我在我的代码中做RSA密钥对生成。我也能够使用此代码进行加密和解密。我需要的是每个用户的唯一密钥对。在我的应用程序中将有多个用户。我想将这些密钥对分配给不同的用户,以便他们可以通过我的应用程序使用它进行加密和解密。
目前我正在使用下面的代码来生成我的RSA公钥和私钥对。
RSAKeyPairGenerator adam = new RSAKeyPairGenerator();
try {
String path = "C:\\Users\\Dream\\Documents\\NetBeansProjects\\ABEPHR\\web\\KeyFiles";
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair generatedKeyPair = keyGen.genKeyPair();
PublicKey pub = generatedKeyPair.getPublic();
System.out.println("Public Key: " + getHexString(pub.getEncoded()));
PrivateKey priv = generatedKeyPair.getPrivate();
System.out.println("Private Key: " + getHexString(priv.getEncoded()));
} catch (Exception e) {
e.printStackTrace();
return;
}
这段代码只能给予我一对RSA密钥。我如何才能得到多对密钥?
**++注意:**很多人建议我在这里添加循环。为了清楚起见,我不能在我的代码中添加循环,因为这些代码将在服务器上为每个用户运行(在JSP中)。
让我用一个例子来解释:假设我有3个用户用户A、B和C。现在验证凭据后,每当用户A来到此页面时(包含上述代码的页面),此页面应生成用户A的唯一密钥对。以后用户A可以存储此密钥以供将来使用。现在当用户B使用其凭据登录时,比他也土地在同一页与上述代码.但上述代码并没有给予我不同的公钥和私钥对.所以在这里我得到相同的RSA密钥对,因为它是在那里的情况下,用户A.同样的情况也发生在用户C身上。
希望这清楚了我的问题。正如下面所建议的,我也尝试在循环中执行上面的代码。在每次迭代中,代码都给我相同的密钥对。我还尝试用第一次迭代中生成的公钥加密msg,并尝试用第二次迭代中生成的私钥解密它。msg成功解密。
我想知道,在尝试获得唯一的RSA密钥对时,我是否遗漏了一些东西?
2条答案
按热度按时间goqiplq21#
这里有一个简单的测试,在我的系统上运行良好。尝试一下,并在你的问题中发布你的结果。
我的试验结果:
jhiyze9q2#
这样生成的密钥对将是唯一的。记住不要初始化两次,只需要多次生成密钥对。