2011-07-20 33 views
2

如何獲取此密鑰對並存儲它以便它不會更改,並且我將能夠使用相同的密鑰對進行加密和解密在單獨的應用程序我用這個密鑰對中的公鑰對一個字符串例如(「1234A」)進行加密並將其存儲到數據庫中。對於解密部分,我從數據庫中獲取加密的字符串,並使用同一密鑰對中的私鑰對其進行解密。如何將密鑰對存儲在變量中以使其不會更改

public static KeyPair generateKey() throws NoSuchAlgorithmException 
{      
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance ("RSA");  
    keyGen.initialize(1024);   
    KeyPair key = keyGen.generateKeyPair();   
    return key;  
} 

回答

1

KeyPair類實現Serializable,其組成部分PrivateKey和PublicKey也一樣。你可以序列化爲字節流並將其存儲在數據庫中?

0

KeyPair是可序列化的,因此您可以將其序列化爲文件或db並在所有應用程序中對其進行反序列化。

1

首先,你需要得到公衆和你的密鑰對與私鑰:

PrivateKey priv = key.getPrivate(); 
    PublicKey pub = key.getPublic(); 

這種方法將寫入密鑰文件,您可以在以後使用解密/驗證一個單獨的應用程序:

public void writeToFile(PrivateKey priv, PublicKey pub){ 
     byte[] keyBytes = priv.getEncoded(); 

     FileOutputStream privOut; 
     try { 
      privOut = new FileOutputStream(privateName); 

     privOut.write(keyBytes); 
     privOut.close(); 

     FileOutputStream pubOut = new FileOutputStream(publicName); 
     byte[] pubKeyBytes = pub.getEncoded(); 
     pubOut.write(pubKeyBytes); 
     pubOut.close(); 


     } catch (FileNotFoundException e) { 
     } catch (IOException e) { 
      } 
     } 
+0

我應該使用什麼擴展名作爲文件名? .cer或.key? – troubled

+0

不需要使用擴展名,如果你不想這樣真的取決於你:) –

+0

哈哈好吧。無論如何,你有網站建議在單獨的應用程序中加密和解密字符串嗎? – troubled

相關問題