所以我根据这个图制作了一个程序: http://www.macs.hw.ac.uk/~ml355/lore/pkencryption.htm
它工作得很好,但正如您在页面底部看到的那样,它需要 OpenSSL 命令。我使用 OpenSSL 并以正确的格式生成了 key 来测试我的程序,运行良好。但我想知道如何在 Java 中生成这些 key 。我已经尝试过无数次,但加密对我来说很难理解和使用。所以我现在没有代码可以展示,我将如何开始这个或者是否有人有一个好的方法来这样做。如果可能的话,我不介意使用充气城堡。
TL;DR:我想使用 java(带或不带公共(public)库)以正确的格式(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
最佳答案
在 Java 中生成 RSA key 对很容易。例如:
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();
}
}
关于java - Java 中的 OpenSSL 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23328928/