Java生成的公钥和ssh keygen生成的密钥之间的差异
我在将包含RSA公钥的字符串(我在cygwin中使用SSh keygen生成)转换为java.security公钥类型时遇到问题 下面是我用来转换键的代码Java生成的公钥和ssh keygen生成的密钥之间的差异,java,ssh,Java,Ssh,我在将包含RSA公钥的字符串(我在cygwin中使用SSh keygen生成)转换为java.security公钥类型时遇到问题 下面是我用来转换键的代码 BASE64Decoder decoder = new BASE64Decoder(); byte[] privBytes = decoder.decodeBuffer(publicKey); KeyFactory keyFact = KeyFactory.getInstance("RSA"); PublicKey testK
BASE64Decoder decoder = new BASE64Decoder();
byte[] privBytes = decoder.decodeBuffer(publicKey);
KeyFactory keyFact = KeyFactory.getInstance("RSA");
PublicKey testKey = keyFact.generatePublic(new X509EncodedKeySpec(publicBytes));
这个代码给了我这个错误
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
与此密钥一起使用时(通过cygwin生成)
但是,每当我使用JavaKeyGenerator创建密钥对时,我都可以将它转换为字符串,保存它,并使用相同的方法读取它,它就可以工作了。我得到一个像这样的公钥
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTK5ad+TnBo/N6FbPtFOtE4crvXkQUimp+gLLp
OA8QRpzTFD9zIV42695rYqmAHZRfBPA8TjEj9WXw0yRAIL3+hbHmOnLyrLfJ+5pD05B7ul83OKgV
mkLtZQacTNjX2iIeNd08ecP4+Chh/uE2dIRxHX1W00TZINySqxgW1cpjiwIDAQAB
因此,我想我的问题是这两个密钥之间有什么区别,如何才能成功地将第一个密钥转换为可用的公钥对象?第一个密钥是ssh-rsa格式的。第二把钥匙是PKCS8 您可以使用
-m
选项ssh-keygen
以java支持的格式生成密钥。您可能会感兴趣,几乎是重复的。
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTK5ad+TnBo/N6FbPtFOtE4crvXkQUimp+gLLp
OA8QRpzTFD9zIV42695rYqmAHZRfBPA8TjEj9WXw0yRAIL3+hbHmOnLyrLfJ+5pD05B7ul83OKgV
mkLtZQacTNjX2iIeNd08ecP4+Chh/uE2dIRxHX1W00TZINySqxgW1cpjiwIDAQAB