`
wenjinglian
  • 浏览: 806100 次
  • 性别: Icon_minigender_1
  • 来自: 株洲->深圳
社区版块
存档分类
最新评论

支付宝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

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics