序列化和反序列化RSA公钥

韦斯顿
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.genKeyPair();
Key publicKey = kp.getPublic();
Key privateKey = kp.getPrivate();

我只想从中创建公钥byte[]

我已经尝试过将其作为实验:

publicKey = new SecretKeySpec(publicKey.getEncoded(), publicKey.getAlgorithm());

但是,使用该密钥的解密然后失败。

我也尝试使用序列化密钥ObjectOutputStream,但是序列化失败。

java.io.NotSerializableException:org.apache.harmony.xnet.provider.jsse.OpenSSLKey

在这里读到我不能SecretKeySpec与RSA一起使用

因此,只要您谈论的是SecretKey而不是RSA或DSA密钥,那么您就不必经历涉及KeyGenerator之类的任何扭曲。

任何人都知道如何执行这些扭曲操作或执行此操作的方法。

罗伯特

像RSA那样的非对称密钥通常以X509格式存储。因此,您可以X509EncodedKeySpec代替使用

Java 7 JavaDoc中已经有一个简单的示例(只需用RSA替换DSA):http : //docs.oracle.com/javase/7/docs/api/java/security/KeyFactory.html

X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(bobEncodedPubKey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey bobPubKey = keyFactory.generatePublic(bobPubKeySpec);

如果您需要反序列化private byte[],我发现您必须使用PKCS8EncodedKeySpec

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章