用Java实现RSA算法

发布于 2024-08-30 08:24:31 字数 483 浏览 2 评论 0原文

我想实现 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

江南月 2024-09-06 08:24:31

通过相关的 KeySpec 类,您可以调用 getModulus() 和 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());

如果它有用,我不久前写了几篇文章来处理 < 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:

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());

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.

雨轻弹 2024-09-06 08:24:31

您发布的内容没有任何意义,因为 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.

恍梦境° 2024-09-06 08:24:31

您可以使用 Key.getEncoded () 获取密钥的字节。

You can use Key.getEncoded() to get the bytes of the key.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文