首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在java中生成ed25519键盘pem文件

如何在java中生成ed25519键盘pem文件
EN

Stack Overflow用户
提问于 2022-01-21 08:53:10
回答 1查看 562关注 0票数 0

我用代码生成了ed25519键区,但是当我将公钥文件和私钥文件复制到linux时,machine.It看起来好像我的密钥对文件有问题。linux机器无法使用键盘文件登录

这是我的密码:

代码语言:javascript
运行
复制
public static void main(String[] args) throws Exception {
    createED25519();
}

private static void createED25519() throws IOException {
    KeyPairGeneratorSpi.Ed25519 ed25519 = new KeyPairGeneratorSpi.Ed25519();
    ed25519.initialize(256, new SecureRandom());
    KeyPair keyPair = ed25519.generateKeyPair();
    PublicKey publicKey = keyPair.getPublic();
    PrivateKey privateKey = keyPair.getPrivate();

    writeEd25519PrivateKey(privateKey);
    writeEd25519PublicKey(publicKey);
}

private static void writeEd25519PrivateKey(PrivateKey privateKey) throws IOException {
    try (PemWriter w = new PemWriter(new FileWriter("D:\\keypair\\Ed25519\\java.pem"))) {
        Ed25519PrivateKeyParameters ed25519PrivateKeyParameters = (Ed25519PrivateKeyParameters) PrivateKeyFactory
                .createKey(privateKey.getEncoded());
        byte[] content = OpenSSHPrivateKeyUtil.encodePrivateKey(ed25519PrivateKeyParameters);
        PemObject o = new PemObject("OPENSSH PRIVATE KEY", content);
        w.writeObject(o);
    }
}

private static void writeEd25519PublicKey(PublicKey publicKey) throws IOException {
    try (FileWriter fileWriter = new FileWriter("D:\\keypair\\Ed25519\\java.pub")) {
        Ed25519PublicKeyParameters publicKeyParameters = (Ed25519PublicKeyParameters) PublicKeyFactory
                .createKey(publicKey.getEncoded());
        String publicKeyPub = "ssh-ed25516 " + Base64.getEncoder().encodeToString(OpenSSHPublicKeyUtil.encodePublicKey(publicKeyParameters));
        fileWriter.write(publicKeyPub);
    }

}

pom.xml:

代码语言:javascript
运行
复制
  <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>1.67</version>
    </dependency>

生成的公钥的内容是:

代码语言:javascript
运行
复制
ssh-ed25516 AAAAC3NzaC1lZDI1NTE5AAAAIJC+iPZZ56a7wogB/UxlmSbrN2hjaOnu26b2pVX6zkZr

生成的私钥的内容是:

代码语言:javascript
运行
复制
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtz
c2gtZWQyNTUxOQAAACCQvoj2Weemu8KIAf1MZZkm6zdoY2jp7tum9qVV+s5GawAA
AIhAEzACQBMwAgAAAAtzc2gtZWQyNTUxOQAAACCQvoj2Weemu8KIAf1MZZkm6zdo
Y2jp7tum9qVV+s5GawAAAED5xx3tLFBLSXC/SE1dSKL3vuUs9mj2+3/086sbXePu
TJC+iPZZ56a7wogB/UxlmSbrN2hjaOnu26b2pVX6zkZrAAAAAAECAwQF
-----END OPENSSH PRIVATE KEY-----

希望有人能知道代码出了什么问题,或者有没有其他方法为SSH登录生成ED25519密钥对文件,谢谢!

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70798646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档