我想实现一个RSA algorithm来加密图像(byte[])。为了生成我的两个密钥,我使用了这段代码:

KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA");
keygen.initialize(512);
keyPair = keygen.generateKeyPair();

生成公钥和私钥后,我想将它们显示给用户,以便他可以分发公钥并使用私钥进行解码。我怎样才能拿回钥匙?
使用keygen.getPrivateKey()keygen.getPublicKey()提供rsa算法的所有信息,而不仅仅是我需要的密钥。
谢谢

最佳答案

通过相关的KeySpec类,可以调用getmodule()和getPublicExponent()/getPrivateExponent()方法来提取关键组件:

KeyFactory fact = KeyFactory.getInstance("RSA");
RSAPublicKeySpec pub = fact.getKeySpec(kp.getPublic(),
  RSAPublicKeySpec.class);
RSAPrivateKeySpec priv = fact.getKeySpec(kp.getPrivate(),
  RSAPrivateKeySpec.class);

saveToFile("public.key", pub.getModulus(),
  pub.getPublicExponent());
saveToFile("private.key", priv.getModulus(),
  priv.getPrivateExponent());

如果有用的话,我之前写了几篇文章,讨论了RSA encryption in Java(和基于java的加密技术)的一些细节。

07-26 07:13