我想实现一个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的加密技术)的一些细节。