2013-10-14 55 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”)创建的关键工厂。 –