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

时间:2017-10-16 06:47:46

标签: 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);

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

  1. 应该是安全的。
  2. 它不应该在文件系统上创建密钥,因为我打算通过其他方法存储它。
  3. 通常情况下,这是我猜到的事情,直到我做对了,但考虑到它的密码学,我想做正确的事。

    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
    

1 个答案:

答案 0 :(得分:1)

您可以直接将公钥和私钥投射到RSAPublicKeyRSAPrivateKey,因为您使用的是RSA KeyPairGenerator

RSAPublicKey rsaPublicKey = (RSAPublicKey) keypair.getPublic();
RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keypair.getPrivate();

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