2013-10-14 89 views
0

獨立於事實,即私鑰應該被加密(它從這個問題獨立地發生):從磁盤加載存儲的RSA公鑰/私鑰?

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

kpg.initialize(2048); 
KeyPair keyPair = kpg.generateKeyPair(); 
privKey = (RSAPrivateKey)keyPair.getPrivate(); 
pubKey = (RSAPublicKey)keyPair.getPublic();  
byte[] data=privKey.getEncoded(); 
... 
byte[] data=pupKey.getEncoded(); 

數據的內容是二進制,而不是基座64:我使用這個碼生成RSA密鑰對編碼或類似的東西。

當我將數據的內容存儲在某個地方並希望稍後加載它們時 - 我該怎麼做? RSAPrivateKey和RSAPublicKey沒有任何構造函數/加載器或類似的東西...

回答

2

這是混亂的,而是從一個java去存儲Key字節使用getEncoded()方法。以其他方式,字節 a Key,使用KeyFactory

如果您的密鑰是私鑰,然後去字節回私鑰創建PKCS8EncodedKeySpec。去字節 RSA公鑰使用X509EncodedKeySpec。然後將這些KeySpecs提供給合適的KeyFactory的實例以恢復PublicKeyPrivateKey對象。

+1

+1。我認爲它必須是使用KeyFactory.getInstance(「RSA」)創建的關鍵工廠。 –