`
wenjinglian
  • 浏览: 824461 次
  • 性别: 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

 

 

分享到:
评论

相关推荐

    RSA公私钥生成工具 RSA秘钥生成工具

    "openssl.zip"文件可能包含OpenSSL库,这是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现,同时也包含各种密码学工具,包括RSA密钥生成。使用OpenSSL,用户可以生成RSA公私钥对,例如通过命令行工具`openssl ...

    OpenSSL 中RSA16进制密钥生成方法

    而`openssl中RSA密钥生成.pdf`可能是一个指南或教程,详细解释了如何在OpenSSL中生成RSA密钥,你可以参考这个文档来获取更深入的理解。 了解并熟练掌握RSA密钥生成和OpenSSL的使用对于任何涉及网络安全的开发人员来...

    RSA公私钥各种格式(包括加密)转换以及验签过程

    功能如下: 1、转换各种PEM(XML)格式公私钥,可以根据私钥获取公钥(pkcs8一般java用,xml...4、生成RSA公私钥对 软件调用OpenSSL相关函数,ui使用Qt5.9(不支持xp),遵循LGPL协议。 支持win7以上的32或64位系统

    支付宝生成RSA公私钥一键操作

    1. **安装工具**:首先,你需要安装支持RSA密钥生成的工具,例如OpenSSL。这是一款强大的安全套接字层密码库,包含了各种主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序供测试或...

    OpenSSL工具生成RSA密钥1

    在这个场景中,我们主要关注如何使用 OpenSSL 生成 RSA 密钥对,这是许多网络安全应用的基础,比如 SSL/TLS 加密、数字签名以及 SSH 连接等。 1. **安装 OpenSSL**: 在 Windows 上,你可以通过下载 OpenSSL 的 ...

    openssl密钥生成工具

    在OpenSSL中,你可以通过以下命令生成一对2048位的RSA密钥: ``` openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 ``` 上述命令将生成一个名为`private_key.pem`的私钥...

    openssl rsa 密钥生成工具

    总结来说,OpenSSL RSA密钥生成工具是一个强大的实用工具,它使得开发者和系统管理员能够轻松创建和管理RSA密钥对,从而实现安全的数据加密和通信。理解并熟练掌握RSA算法和OpenSSL的使用,对于从事信息安全、网络...

    Windows版 生成RSA公钥和私钥的工具

    本文将详细讲解如何在Windows操作系统上利用OpenSSL工具生成RSA公钥和私钥。 首先,OpenSSL是一个强大的安全套接字层...无论是开发安全应用还是进行个人数据保护,掌握RSA密钥对的生成和使用都是至关重要的IT技能。

    Java OpenSSL生成的RSA公私钥进行数据加解密详细介绍

    在Java中,可以使用`java.security`包下的`KeyPairGenerator`类来生成RSA密钥对,但这里介绍的是使用OpenSSL生成的密钥。将OpenSSL生成的密钥导入Java程序,可以使用`java.security.spec.RSAPrivateKeySpec`和`java....

    支付宝RSA加密用的openssl

    OpenSSL是一个强大的安全套接字层(SSL)和传输层安全(TLS)协议实现工具包,同时也包含了用于处理公钥基础设施(PKI)的库,如RSA密钥的生成、管理和操作。 在支付宝的场景中,RSA加密用于保护用户数据的隐私。当...

    openssl-0.9.8k_WIN32(RSA密钥生成工具)

    在"生成命令.txt"文件中,通常会包含如何使用OpenSSL命令行工具生成RSA密钥对的指令,例如: ``` openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 openssl rsa -in private_...

    基于OpenSSL的RSA加解密的C语言实现

    2.该程序具有生成RSA密钥对、RSA公钥加密和RSA私钥解密的功能,支持手动输入密钥; 3.该程序支持不限长度的明文加密,支持256~4096长度的密钥,支持Crypto++密码库生成的RSA密钥对(公钥:X.509,私钥:PKCS#8); 4...

    使用openssl生成RSA密钥对

    ### 使用OpenSSL生成RSA密钥对 在网络安全与加密领域,使用公钥基础设施(Public Key Infrastructure,PKI)是常见的做法。其中,OpenSSL作为一款强大的工具库,提供了丰富的功能来支持各种加密算法,包括RSA算法。...

    OpenSSL免安装RSA密钥生成工具

    通常,生成RSA密钥对的命令行操作需要对OpenSSL有一定的了解,而这个免安装工具简化了这个过程,使得即使是对OpenSSL不熟悉的用户也能轻松生成密钥。 压缩包内的"rsa制作教程.txt"可能包含了详细的操作步骤,指导...

    RSA1024 RSA2048算法密匙生成器

    `openssl`可能是一个OpenSSL的命令行工具集,用户可以直接通过命令行进行RSA密钥的生成、证书的创建等相关操作。 总的来说,这个压缩包提供了一套工具,用于生成和操作RSA算法的密钥,包括1024位和2048位的密钥,...

    openssl,PHP 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

    PHP 公私钥加解密

    描述中提到的“自带公私钥文件”可能就是已经生成好的密钥对,用户可以直接使用,或者通过`openssl_pkey_export()`导出私钥,`openssl_pkey_get_details()`获取公钥信息。 进行加解密操作时,我们可以使用`openssl_...

    Rsa.rar_RSA openssl_openssl rsa_openssl rsa c_rsa

    1. 密钥生成:通过`RSA_generate_key_ex()`函数,可以生成一对RSA密钥,包括公钥和私钥。参数包括所需的密钥长度(通常为1024、2048或4096位),随机数生成器和一些标志。 2. 加密:使用公钥进行加密,调用`RSA_...

    rsa_test.rar_c openssl RSA_openssl rsa_rsa_rsa openssl

    1. **密钥生成**:首先,程序会使用OpenSSL的`RSA_generate_key_ex()`函数生成一对RSA密钥。这通常涉及选择一个大素数作为模数(n),以及两个正整数e和d,它们满足e*d ≡ 1 mod (φ(n)),其中φ(n)是欧拉函数。公钥...

    RsaUtil 生成公私钥

    在本例中,压缩包中的`OpenSSL`可能是一个命令行工具,可以用来生成RSA密钥对: - **生成密钥对**:使用`openssl genpkey -algorithm RSA -out private_key.pem`生成私钥,然后使用`openssl rsa -pubout -in ...

Global site tag (gtag.js) - Google Analytics