【问题标题】:How can I read RSA keys in Java?如何在 Java 中读取 RSA 密钥?
【发布时间】:2012-09-21 16:48:56
【问题描述】:

我正在尝试用 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)

【问题讨论】:

    标签: java cryptography rsa x509 pkcs#8


    【解决方案1】:

    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。 Cygwin 版本的 openssh 可以很好地解决这个问题;无需寻找Unix系统来运行openssh

    【讨论】:

    • OpenSSL 也可以为 Windows 命令 shell 编译,虽然我个人更喜欢 Cygwin 中的 Bash shell。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    相关资源
    最近更新 更多