在没有 Bouncy Castle 的情况下,如何在 java 中从私有(ecdsa)生成公钥?

Posted

技术标签:

【中文标题】在没有 Bouncy Castle 的情况下,如何在 java 中从私有(ecdsa)生成公钥?【英文标题】:how I can make public key from private (ecdsa) in java without Bouncy Castle? 【发布时间】:2017-11-06 20:26:55 【问题描述】:

我有私钥 (ecdsa,secp256r1)。

private final static String SHA = "SHA-256";
        private final static String MODE = "EC";
        private final static String PROV = "SunEC";
        private final static String ECC_ALGO = "secp256r1";

public static KeyPair eccKeyGen() 


                KeyPairGenerator kpg;
                KeyPair kp = null;
                try 
                        kpg = KeyPairGenerator.getInstance(MODE, PROV);
                        ECGenParameterSpec ecsp;
                        ecsp = new ECGenParameterSpec(ECC_ALGO);
                        kpg.initialize(ecsp);
                        kp = kpg.genKeyPair();
                        return kp;
                 catch (Exception e) 
                        System.out.println("Key generation error.");
                        e.printStackTrace();
                
                return kp;

如何在没有 Bouncy Castle 的情况下在 java 中从中生成公钥?

【问题讨论】:

How to get the RSA public-key from private-key Object in Java的可能重复 【参考方案1】:

假设您的私钥是 OpenSSH 格式,您可以为 ssh-keygen 使用 -y 选项。例如,如果您的私钥包含在mykey中,则以下命令将生成其公钥

ssh-keygen -y -f mykey > mykey.pub

【讨论】:

“假设你的私钥是 OpenSSH 格式”我如何将它插入到 Java 代码中? 既然您添加了一些代码示例,我想这不是丢失您的公钥的问题。您是否在问是否有其他 JCE 提供商可以做与 Bouncy Castle 相同的事情?

以上是关于在没有 Bouncy Castle 的情况下,如何在 java 中从私有(ecdsa)生成公钥?的主要内容,如果未能解决你的问题,请参考以下文章

Bouncy Castle PGP 解密问题

如何使用Bouncy Castle解密AES / CCM加密密文?

使用 RSA Bouncy Castle 加密/解密无法正常工作

如何使用 Bouncy Castle 创建与 OpenSSH 兼容的 ED25519 密钥?

为 Bouncy Castle C# API 使用多个键

markdown CSS 3D Bouncy Castle