2

我正在尝试读取 Java 中的 RSA 公钥和私钥文件。

我的 RSA 公钥和私钥是使用 PuttyGen 生成的。(SSH-2 RSA,1024 位)

我用于读取文件的代码是:

//public key
pubkeyBytes = getBytesFromFile(new File(pubKeyfileName));
KeySpec pubSpec = new X509EncodedKeySpec(pubkeyBytes);
RSAPublicKey pubKey =(RSAPublicKey) rsakeyFactory.generatePublic(pubSpec);

//private key
privkeyBytes = getBytesFromFile(new File(privKeyfileName));
PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(privkeyBytes);
PrivateKey privKey = rsakeyFactory.generatePrivate(privSpec);

它抛出:

java.security.InvalidKeyException: invalid key format
    at sun.security.x509.X509Key.decode(Unknown Source)
4

1 回答 1

6

Putty 使用自己的密钥格式。您需要将 Putty 密钥导出为 OpenSSH 格式 - 请参阅如何将使用 PuttyGen(Windows) 生成的 SSH 密钥对转换为 ssh-agent 和 KeyChain(Linux) 使用的密钥对

然后,您需要将 OpenSSH 密钥转换为 pkcs8 格式 - 请参阅如何从文件加载 RSA 私钥。Cygwin 版本的 openssh 可以很好地解决这个问题;无需寻找 Unix 系统即可运行openssh

于 2012-09-30T17:02:12.867 回答