1.先配置好openssl 环境变量
保证cmd 输入openssl能够找到命令
2.java 代码
package com.openssl; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; class StreamDrainer implements Runnable { private InputStream ins; public StreamDrainer(InputStream ins) { this.ins = ins; } public void run() { try { BufferedReader reader = new BufferedReader(new InputStreamReader( ins)); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (Exception e) { e.printStackTrace(); } } } public class TestRunCmd { /** rsa 公钥 */ private static String RSA_PUBLIC_KEY_FILE = "rsa_public_key.pem"; public static void main(String[] args) { String rsaPrivate = ""; String rsaPublic = ""; String command = "openssl genrsa -out rsa_private_key.pem 1024"; cmdExec(command, false); command = "openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem"; cmdExec(command, false); command = "openssl pkcs8 -topk8 -nocrypt -inform PEM -in rsa_private_key.pem -outform PEM outform"; String returnStr = cmdExec(command, true); if (returnStr != null && returnStr.length() > 0) { //过滤空值、头、尾 rsaPrivate = returnStr.replace(" ", "") .replace("-----BEGINPRIVATEKEY-----", "") .replace("-----ENDPRIVATEKEY-----", ""); } rsaPublic = readFile(new File(RSA_PUBLIC_KEY_FILE)); if (rsaPublic != null && rsaPublic.length() > 0) { rsaPublic = rsaPublic.replace(" ", "") .replace("-----BEGINPUBLICKEY-----", "") .replace("-----ENDPUBLICKEY-----", ""); } System.out.println("私钥: " + rsaPrivate); System.out.println("公钥: " + rsaPublic); } public static String cmdExec(String command, boolean isReturn) { String returnStr = ""; String[] cmd = new String[] { "cmd.exe", "/C", command }; try { Process process = Runtime.getRuntime().exec(cmd); if (isReturn) { returnStr = result(process.getInputStream()); } else { new Thread(new StreamDrainer(process.getInputStream())).start(); } new Thread(new StreamDrainer(process.getErrorStream())).start(); process.getOutputStream().close(); int exitValue = process.waitFor(); System.out.println("返回值:" + exitValue); } catch (Exception e) { e.printStackTrace(); } return returnStr; } public static String result(InputStream ins) { StringBuilder sb = new StringBuilder(1000); try { BufferedReader reader = new BufferedReader(new InputStreamReader( ins)); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); sb.append(line); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } public static String readFile(File file) { StringBuilder sb = new StringBuilder(1000); FileInputStream fis = null; BufferedReader reader = null; try { fis = new FileInputStream(file); reader = new BufferedReader(new InputStreamReader( fis)); String line = null; while ((line = reader.readLine()) != null) { sb.append(line); } } catch (Exception e) { e.printStackTrace(); }finally{ try { reader.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } }
结果:
私钥: MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAL1Vv8RsPrZw46j3Vc02VHOrJtwpH3l9mHnsGGTz8GJrw3R6RZ/k6vtbaZYDEZnQ5EuXunTT2c3rw9/zjE+n/26mGWKfpyS/T2Zg5OyUtR5lwRohWXfKOuXY3FSM97JAV4iS0XElIIoK7S0i6ON0gxFNGXzD06FTz1Nqd8YDJgNvAgMBAAECgYAKzItFjs785O93QbQ5IjIq7sYmpInRCiLaQWcayvcZBgB98kNqXUox0ALztXUZitqanSrbYwH3Rs1DRsbn/DMLaVWb5QGl3e3mL6ZfqcdqaN7aITi+WZ8XKDj4FUDJQz7mH3AjnVkqKjyBfWhWMNqgGlvtMXHo6+j7GyXIgujfwQJBAPXFLtLuUmPbA5NohCgvnmz7NFpiqr5O0pGC5oj2IMI3T9xUVvd8RPfKKIGUHmVF9MI3+dSUNgFGZsBY4ItSXb8CQQDFNzeXvsnk2mwCusbshB4Ed1gkutYy3EUu9bGHB0krYkj9SPse7q3DGXLl9z7h+2/A+5EV72cWr1gKn/Ju1CZRAkEA5LIv+Ce8kx7iHPFMyPhGu7Kl7NWTfLNsTes5Com9wfwmXCg/JNyGcO20858ZCbQnJfNgjue7uUQBqUsK55olkQJBAJ478n/vVYAofDcoc0j7rDX7J564xfoi3+OQwHLNtrh3cIbA0rP73zFFrvmyiiK5Ie5eKgfGgRkjcOl9cf/YejECQFIOjf9hHc25nb1iBLaadTe5aAXn6lS2K8RqQvzi8Ll/MkU/D0pvLZn6aEYHEhQ7FVXei+QY0eY1rzVrK0Vwbos=
公钥: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9Vb/EbD62cOOo91XNNlRzqybcKR95fZh57Bhk8/Bia8N0ekWf5Or7W2mWAxGZ0ORLl7p009nN68Pf84xPp/9uphlin6ckv09mYOTslLUeZcEaIVl3yjrl2NxUjPeyQFeIktFxJSCKCu0tIujjdIMRTRl8w9OhU89TanfGAyYDbwIDAQAB
相关推荐
"openssl.zip"文件可能包含OpenSSL库,这是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现,同时也包含各种密码学工具,包括RSA密钥生成。使用OpenSSL,用户可以生成RSA公私钥对,例如通过命令行工具`openssl ...
而`openssl中RSA密钥生成.pdf`可能是一个指南或教程,详细解释了如何在OpenSSL中生成RSA密钥,你可以参考这个文档来获取更深入的理解。 了解并熟练掌握RSA密钥生成和OpenSSL的使用对于任何涉及网络安全的开发人员来...
功能如下: 1、转换各种PEM(XML)格式公私钥,可以根据私钥获取公钥(pkcs8一般java用,xml...4、生成RSA公私钥对 软件调用OpenSSL相关函数,ui使用Qt5.9(不支持xp),遵循LGPL协议。 支持win7以上的32或64位系统
1. **安装工具**:首先,你需要安装支持RSA密钥生成的工具,例如OpenSSL。这是一款强大的安全套接字层密码库,包含了各种主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序供测试或...
在这个场景中,我们主要关注如何使用 OpenSSL 生成 RSA 密钥对,这是许多网络安全应用的基础,比如 SSL/TLS 加密、数字签名以及 SSH 连接等。 1. **安装 OpenSSL**: 在 Windows 上,你可以通过下载 OpenSSL 的 ...
在OpenSSL中,你可以通过以下命令生成一对2048位的RSA密钥: ``` openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 ``` 上述命令将生成一个名为`private_key.pem`的私钥...
总结来说,OpenSSL RSA密钥生成工具是一个强大的实用工具,它使得开发者和系统管理员能够轻松创建和管理RSA密钥对,从而实现安全的数据加密和通信。理解并熟练掌握RSA算法和OpenSSL的使用,对于从事信息安全、网络...
本文将详细讲解如何在Windows操作系统上利用OpenSSL工具生成RSA公钥和私钥。 首先,OpenSSL是一个强大的安全套接字层...无论是开发安全应用还是进行个人数据保护,掌握RSA密钥对的生成和使用都是至关重要的IT技能。
在Java中,可以使用`java.security`包下的`KeyPairGenerator`类来生成RSA密钥对,但这里介绍的是使用OpenSSL生成的密钥。将OpenSSL生成的密钥导入Java程序,可以使用`java.security.spec.RSAPrivateKeySpec`和`java....
OpenSSL是一个强大的安全套接字层(SSL)和传输层安全(TLS)协议实现工具包,同时也包含了用于处理公钥基础设施(PKI)的库,如RSA密钥的生成、管理和操作。 在支付宝的场景中,RSA加密用于保护用户数据的隐私。当...
在"生成命令.txt"文件中,通常会包含如何使用OpenSSL命令行工具生成RSA密钥对的指令,例如: ``` openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 openssl rsa -in private_...
2.该程序具有生成RSA密钥对、RSA公钥加密和RSA私钥解密的功能,支持手动输入密钥; 3.该程序支持不限长度的明文加密,支持256~4096长度的密钥,支持Crypto++密码库生成的RSA密钥对(公钥:X.509,私钥:PKCS#8); 4...
### 使用OpenSSL生成RSA密钥对 在网络安全与加密领域,使用公钥基础设施(Public Key Infrastructure,PKI)是常见的做法。其中,OpenSSL作为一款强大的工具库,提供了丰富的功能来支持各种加密算法,包括RSA算法。...
通常,生成RSA密钥对的命令行操作需要对OpenSSL有一定的了解,而这个免安装工具简化了这个过程,使得即使是对OpenSSL不熟悉的用户也能轻松生成密钥。 压缩包内的"rsa制作教程.txt"可能包含了详细的操作步骤,指导...
`openssl`可能是一个OpenSSL的命令行工具集,用户可以直接通过命令行进行RSA密钥的生成、证书的创建等相关操作。 总的来说,这个压缩包提供了一套工具,用于生成和操作RSA算法的密钥,包括1024位和2048位的密钥,...
命令: openssl genrsa -out rsa_private_key.pem 1024 openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -...openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
描述中提到的“自带公私钥文件”可能就是已经生成好的密钥对,用户可以直接使用,或者通过`openssl_pkey_export()`导出私钥,`openssl_pkey_get_details()`获取公钥信息。 进行加解密操作时,我们可以使用`openssl_...
1. 密钥生成:通过`RSA_generate_key_ex()`函数,可以生成一对RSA密钥,包括公钥和私钥。参数包括所需的密钥长度(通常为1024、2048或4096位),随机数生成器和一些标志。 2. 加密:使用公钥进行加密,调用`RSA_...
1. **密钥生成**:首先,程序会使用OpenSSL的`RSA_generate_key_ex()`函数生成一对RSA密钥。这通常涉及选择一个大素数作为模数(n),以及两个正整数e和d,它们满足e*d ≡ 1 mod (φ(n)),其中φ(n)是欧拉函数。公钥...
在本例中,压缩包中的`OpenSSL`可能是一个命令行工具,可以用来生成RSA密钥对: - **生成密钥对**:使用`openssl genpkey -algorithm RSA -out private_key.pem`生成私钥,然后使用`openssl rsa -pubout -in ...