用Java实现RSA算法
我想实现 RSA 算法 来加密图像 (byte[])。为了生成我的两个密钥,我使用了这段代码:
KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA");
keygen.initialize(512);
keyPair = keygen.generateKeyPair();
生成公钥和私钥后,我想将它们显示给用户,以便他可以分发公钥并使用私钥进行解码。我怎样才能拿回那些钥匙?
使用 keygen.getPrivateKey()
和 keygen.getPublicKey()
为我提供 RSA 算法的所有信息,而不仅仅是我需要的密钥。
谢谢
I want to implement a RSA algorithm to encrypt an image (byte[]
). To generate my two keys I used this piece of code :
KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA");
keygen.initialize(512);
keyPair = keygen.generateKeyPair();
Once public and private key are generated, I would like to show them to the user so he can distribute the public key and use the private key to decode. How can I get back those key?
Using keygen.getPrivateKey()
and keygen.getPublicKey()
give me all the information of the RSA algorithm, not only the keys I need.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
通过相关的 KeySpec 类,您可以调用 getModulus() 和 getPublicExponent()/getPrivateExponent() 方法来提取关键组件:
如果它有用,我不久前写了几篇文章来处理 < a href="http://www.javamex.com/tutorials/cryptography/rsa_encryption.shtml" rel="nofollow noreferrer">Java 中的 RSA 加密(以及通常基于 Java 的加密技术。
Via the Relevant KeySpec classes, you can call the getModulus() and getPublicExponent()/getPrivateExponent() methods to pull out the key components:
In case it's useful, I wrote a few articles a while back dealing with some of the details of RSA encryption in Java (and Java-based cryptography generally.
您发布的内容没有任何意义,因为 getPublicKey() 和 getPrivateKey() 返回的正是您所说的需要的内容。但是,如果您想提取组件,您应该简单地将 PublicKey 和 PrivateKey 转换为 RSAPublicKey 和 RSAPrivateKey,而不是经历使用 KeySpec 的繁琐过程。
此外,您很快就会发现您无法在您的计划中使用 RSA 加密任何大于 501 字节的内容,这对于图像来说几乎没有用处。
What you post doesn't make any sense since getPublicKey() and getPrivateKey() return exactly what you say you need. However, if you want to extract the components you should simply cast your PublicKey and PrivateKey to RSAPublicKey and RSAPrivateKey rather than going through the rigamorole of using KeySpecs.
Also, you'll soon find out that you cannot encrypt anything larger than 501 bytes using RSA with your plan, pretty much useless for images.
您可以使用 Key.getEncoded () 获取密钥的字节。
You can use Key.getEncoded() to get the bytes of the key.