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] 删除。
我来说两句