如何生成与 com.auth0 java-jwt 一起使用的 RSA 密钥?

Rya*_*ach 5 java cryptography rsa jwt

https://github.com/auth0/java-jwt

指出为 JWT 设置算法应该像下面一样简单

//RSA
RSAPublicKey publicKey = //Get the key instance
RSAPrivateKey privateKey = //Get the key instance
Algorithm algorithmRS = Algorithm.RSA256(publicKey, privateKey);
Run Code Online (Sandbox Code Playgroud)

问题是我无法弄清楚如何在不接触文件系统的情况下创建 RSAPublicKey 和 RSAPrivateKey 实例。

  1. 它应该是安全的。
  2. 它不应该在文件系统上创建密钥,因为我计划通过另一种方法存储它。

通常这是我会猜测的事情,直到我猜对为止,但考虑到它是密码学,我想做正确的事情。

keygen = KeyPairGenerator.getInstance("RSA");
        RSAKeyGenParameterSpec spec = new RSAKeyGenParameterSpec(2048, RSAKeyGenParameterSpec.F4); //What does F4 mean vs F0?
            keygen.initialize(spec);
            KeyPair keypair = keygen.generateKeyPair();
            PublicKey pub = keypair.getPublic(); //Wrong type, need RSAPublicKey
            PrivateKey priv = keypair.getPrivate(); //Wrong type, need RSAPrivateKey
Run Code Online (Sandbox Code Playgroud)

ped*_*ofb 4

您可以直接将公钥和私钥转换为RSAPublicKeyRSAPrivateKey因为您使用的是 RSA KeyPairGenerator

RSAPublicKey rsaPublicKey = (RSAPublicKey) keypair.getPublic();
RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keypair.getPrivate();
Run Code Online (Sandbox Code Playgroud)

key.getEncoded();您可以使用(无需强制转换)获取关键内容并将其存储为字节数组,以您喜欢的方式