所以我根据这个啧啧做了一个程序: 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
答案 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();
}
}