Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java生成的公钥和ssh keygen生成的密钥之间的差异_Java_Ssh - Fatal编程技术网

Java生成的公钥和ssh keygen生成的密钥之间的差异

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

我在将包含RSA公钥的字符串(我在cygwin中使用SSh keygen生成)转换为java.security公钥类型时遇到问题

下面是我用来转换键的代码

  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