我正在尝试用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)
答案 0 :(得分:6)
Putty使用自己的密钥格式。您需要将Putty密钥导出为OpenSSH格式 - 请参阅How to convert SSH keypairs generated using PuttyGen(Windows) into key-pairs used by ssh-agent and KeyChain(Linux)。
然后,您需要将OpenSSH密钥转换为pkcs8格式 - 请参阅How to Load RSA Private Key From File。 openssh的Cygwin版本可以正常使用;没有必要找到一个运行openssh
的Unix系统。