Java中的OpenSSL命令?

时间:2014-04-27 20:59:49

标签: java encryption openssl public-key pkcs#8

所以我根据这个啧啧做了一个程序: http://www.macs.hw.ac.uk/~ml355/lore/pkencryption.htm

它工作得非常好,但正如您在页面底部看到的那样,它需要OpenSSL命令。我使用OpenSSL并以正确的格式生成我的密钥来测试我的程序,完美运行。但我想知道如何用Java生成这些密钥。我已经尝试过无数次但加密对我来说很难理解并且可以使用。所以我现在没有代码可以显示,我将如何开始这个或者如果有人有这么好的方法。如果可能的话,我不介意使用充气城堡。

TL; DR:我想使用java(带或不带公共库)以正确的格式(PKCS#8,DER)生成唯一的私钥和公钥。

只需在java中使用这些命令(不通过OpenSSL运行):

生成长度为2048位的私钥:

openssl genrsa -out private.pem 2048

将其转换为所需的(PKCS#8,DER)格式:

openssl pkcs8 -topk8 -in private.pem -outform DER -out private.der -nocrypt

从私钥生成公钥:

openssl rsa -in private.pem -pubout -outform DER -out public.der

1 个答案:

答案 0 :(得分:1)

在Java中生成RSA密钥对很容易。例如:

import java.security.*;
import java.security.interfaces.*;

public class RSACreate {

    public static void main(String[] args) throws Exception {
        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
        kpg.initialize(2048, new SecureRandom());
        KeyPair kp = kpg.generateKeyPair();
        RSAPrivateCrtKey rsaPriv = (RSAPrivateCrtKey) kp.getPrivate();
        RSAPublicKey rsaPub = (RSAPublicKey) kp.getPublic();
    }

}