java - Java 中的 OpenSSL 命令?

标签 java encryption openssl public-key pkcs#8

所以我根据这个图制作了一个程序: 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/

相关文章:

java - 如何使用参数在触发器中设置模式?

java - 如何根据div中的其他元素编写嵌套的xpath xpression?

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

java - 在android中使用AES CTR模式随机访问InputStream

c# - ssl 或 https 在这种情况下什么最有用

ssl - 在 Windows 上的 Emacs gnus 中打开 gmail nnimap 服务器时遇到问题

java - 覆盖主要方法

asp.net - C# ASP.NET Core 2 中的安全网络聊天

Azure WebJob 队列触发器不响应加密的队列消息

java - openssl - 通过 Java 解密