2017-10-16 220 views
1

https://github.com/auth0/java-jwt如何生成與com.auth0 java-jwt一起使用的RSA密鑰?

國家,設立了智威湯遜的算法應該是越簡單

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

的問題是我不知道如何不觸及文件系統創建一個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 

回答

1

您可以直接澆鑄的公鑰和私鑰對RSAPublicKeyRSAPrivateKey,因爲你使用的是RSA的KeyPairGenerator

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

可以開始使用key.getEncoded();的重點內容(無投需要)你並儲存起來作爲字節數組您喜歡的任何方式

+0

您知道F0和F4指數的用途嗎? –

+0

我認爲F0(3)是'RSAKeyPairGenerator'使用的公共指數的最小值,F4(65537)是RFC的推薦值。請參閱https://crypto.stackexchange.com/questions/3110/impacts-of-not-using-rsa-exponent-of-65537 – pedrofb