支付宝RSA 公私钥 程序生成,openssl rsa 密钥程序生成,想要多少有多少
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
上一篇: 狗日的支付宝
下一篇: 一个基于RSA算法的Java数字签名例子