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
相关推荐
功能如下: 1、转换各种PEM(XML)格式公私钥,可以根据私钥获取公钥(pkcs8一般java用,xml...4、生成RSA公私钥对 软件调用OpenSSL相关函数,ui使用Qt5.9(不支持xp),遵循LGPL协议。 支持win7以上的32或64位系统
linux下openssl中非对称加密算法RSA的16进制密钥生成方法
1.安装OpenSSL(Win32) 0.9.8l解压压缩包, 双击exe文件:选择安装路径:选择工具安装位置:安装中:安装完成:2.生成RSA密钥进入Open
2.该程序具有生成RSA密钥对、RSA公钥加密和RSA私钥解密的功能,支持手动输入密钥; 3.该程序支持不限长度的明文加密,支持256~4096长度的密钥,支持Crypto++密码库生成的RSA密钥对(公钥:X.509,私钥:PKCS#8); 4...
使用openssl生成RSA密钥对
命令: 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
生成RSA加密解密使用的密钥对项目
直接可用的密钥对生成工具,可配合博客:http://blog.csdn.net/a138984/article/details/47042267 参考使用
RSA密钥生成与使用 openssl密钥生成工具。内附使用方法
openssl-0.9.8k_WIN32 RSA密钥生成工具
openssl 1.1.1C 中把pem格式的rsa密钥解析出,RSA格式的密钥,然后从RSA密钥中解析出RSA密钥中的,n,d,e,dp,dq等信息;
RSA秘钥生成工具,不用安装,生成出来的秘钥能完美应用于支付宝 微信 QQ钱包等。好不容易才找到的,分享给大家
c++通过使用openssl实现rsa加密解密算法,网上有很多文章和例子,但是大部分都是linux版的,并且内容不全、代码老旧等各种问题,导致最后无法调试,这里提供的源码是用code::blocks编写的c++源码,可以直接运行...
OpenSSL免安装工具包
基于openssl的RSA密钥对生成、RSA运算、3DES运算实现,并编写了测试程序。
自带公私钥文件和加解密demo,可通过openssl重新生成密钥文件 确保上传的内容合法合规,涉及侵权内容将会被移除
基于openssl写的RSA的公钥加密,私钥解密,私钥加密,公钥解密的测试例子,密钥类型是rsa1024的PEM格式。
使用openssl生成RSA秘钥对
Hmailserver配置openSSL生成密钥公钥Win64OpenSSL+DKIM,文件内容有Win64OpenSSL_Light-1_1_1w,GenDKIM.bat,GenDKIMtxt.exe,makeHMScert.bat,先安装Win64OpenSSL_Light-1_1_1w,然后进入安装目录的bin目录下,将...
在公开密钥加密和电子商业中RSA被广泛使用。这是演示程序,不包含控件 型的应用 1. 苹果App签名, iOS App 签名的原理; 2. 支付宝签名验证 ; 2. HTTPS 加密连接; 3. 程序直接用RSA+AES加密通信 ; 如:利用...