gpt4 book ai didi

java - 如何在Java中将OpenSSH私钥转换为RSA私钥?

转载 作者:行者123 更新时间:2023-11-30 01:48:36 44 4
gpt4 key购买 nike

我有一个 OpenSSH 格式的私钥文件:

-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----

但我需要 RSA 格式:

-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

在终端上我会这样做:

ssh-keygen -p -m PEM -f my-openssh-file

但我需要用 Java 来完成。

我尝试过使用 org.bouncycaSTLe.openssl.PEMWriter,但我不知道如何将输入 key (作为输入字符串)转换为可以传递给 PEMWriter 的 PrivateKey 对象。

最佳答案

这实际上可以通过 Maverick Synergy Java SSH API 实现。

我们的 SSH API 的这个新分支支持新的 OpenSSH 私钥文件格式,因此您可以加载新 key 并将其转换为 BouncyCaSTLe 支持的旧 PEM 格式。

您将需要以下 Maven 依赖项:

    <dependency>
<groupId>com.sshtools</groupId>
<artifactId>maverick-synergy-client</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>com.sshtools</groupId>
<artifactId>maverick-bc</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>

您还需要以下快照存储库,因为当前尚未正式发布 API:

    <repository>
<id>oss-snapshots</id>
<snapshots>
<enabled>true</enabled>
</snapshots>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>

首先,您可以使用以下方法加载新的 OpenSSH 私钥格式:

SshKeyPair key = SshKeyUtils.getPrivateKey(
new File("id_rsa"), "passphrase");

然后,您可以通过将其传递到旧格式实现并通过 getFormattedKey 方法检索文本来转换它。

System.out.write(new OpenSSHPrivateKeyFileBC(
key, "passphrase").getFormattedKey());

作为此答案的一些背景知识并声明我是推荐项目的开发人员,Maverick Synergy 是第三代 API,继承自 J2SSH Maverick 和 Maverick Legacy 商业 API。 Maverick Synergy 作为 LGPL 许可的开源产品完全可用。

关于java - 如何在Java中将OpenSSH私钥转换为RSA私钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56900615/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com