【问题标题】:How to use RSAPublicKey and RSAPrivateKey classes in Java?如何在 Java 中使用 RSAPublicKey 和 RSAPrivateKey 类?
【发布时间】:2018-09-03 03:48:15
【问题描述】:

我正在尝试使用 [Java JWT] 库(https://github.com/auth0/java-jwt) 来生成 JWT,我需要创建私钥和公钥的实例,即 RSAPrivateKey 和 RSAPublicKey。

//RSA
RSAPublicKey publicKey = //Get the key instance
RSAPrivateKey privateKey = //Get the key instance
Algorithm algorithmRS = Algorithm.RSA256(publicKey, privateKey);

如何创建 RSAPrivateKey 和 RSAPublicKey 的实例?

我已经使用 OpenSSL 创建了 .pem 文件(如果有帮助的话),但我也无法使用它。

【问题讨论】:

  • 您需要生成一个 KeyPair,这样 PrivateKey 才能用于解码 PublicKey。看看这个链接docs.oracle.com/javase/tutorial/security/apisign/step2.html
  • @FattySalami 您提供的链接提供了一种生成 PublicKey 和 PrivateKey 类实例的方法,但我需要 RSAPublicKey 和 RSAPrivateKey 类的实例。请注意。如果您提供代码 sn-p 或一些解释将非常有帮助。谢谢。

标签: java jwt rsa


【解决方案1】:

首先创建 KeyPairGenerator 以创建 KeyPairs。

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");

这将为您提供一个使用 RSA 的 KeyPairGenerator。接下来,使用您希望它使用的字节数初始化生成器,然后创建 KeyPair。

kpg.initialize(1024);
KeyPair kp = kpg.generateKeyPair();

使用它们的 Getter 从 KeyPair kp 中获取 PublicKey 和 PrivateKey,而不是因为 RsaPublicKey 只是 Key 的子类,我们使用 RSA 制作了这些密钥,我们可以安全地将 PublicKey 和 PrivateKey 类转换为 RSAPublicKey 和 RSAPrivateKey

RSAPublicKey rPubKey = (RSAPublicKey) kp.getPublic();
RSAPrivateKey rPriKey = (RSAPrivateKey) kp.getPrivate();

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-04-20
  • 2019-08-15
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
相关资源
最近更新 更多