使用OpenSSL生成并学习使用RSA密钥对

非对称加密算法也叫<公开密钥算法>,不同于对称加密算法,非对称加密算法加密密钥与解密密钥不是一把密钥、非对称密钥对中公钥是可以公开的。

这种算法如果使用公钥进行加密,则只能使用相应的私钥解密;如使用私钥加密,也只能使用相应的公钥解密。而要想通过公钥推导出私钥几乎是不可能的(这样的算法可以使用一些不可逆函数实现)!

OpenSSL支持RSA、DSA、DH三种不同的非对称加密算法。下面我们将介绍如何使用OpenSSL生成并学习使用RSA密钥对。

RSA非对称加密:

一、生成RSA密钥对(opensll genrsa):

1.语法说明:

usage: genrsa [args] [numbits]

-des             encrypt the generated key with DES in cbc mode(使用des加密算法加密RSA密钥对)

-des3           encrypt the generated key with DES in ede cbc mode (168 bit key) (使用des3加密算法加密RSA密钥对)

-aes128, -aes192, -aes256

encrypt PEM output with cbc aes (使用aes加密算法加密RSA密钥对)

-out file       output the key to 'file(输出密钥对文件)

-passout arg    output file pass phrase source (输出密钥文件的口令)

-f4             use F4 (0x10001) for the E value (使用F4作为公钥的E参数,默认为该选项)

-3              use 3 for the E value (使用3作为公钥的E参数)

-engine e       use engine e, possibly a hardware device. (使用第三方设备生成密钥对)

-rand file:file:...    (手动指定随机数文件)

load the file (or the files in the directory) into

the random number generator

2.案例:

(1)openssl genrsa -out rsakey.pem 2048        

生成一个2048位的密钥对,注:没有对密钥进行加密操作。

(2)openssl genrsa -aes128 -out rsakey.pem -passout pass:111111 2048  

生成一份2048位的密钥对,并对密钥对使用aes算法加密,密钥口令为111111

说明:openssl生成的公钥与私钥默认被存放在一个文件中,当需要提取公钥或私钥时需要使用rsa命令,她可以用来管理密钥文件。

时间: 2024-08-04 03:42:12

使用OpenSSL生成并学习使用RSA密钥对的相关文章

openssl-OpenSSl生成证书,用rsa生成ca证书,接着用dsa生成server或client证书时出错

问题描述 OpenSSl生成证书,用rsa生成ca证书,接着用dsa生成server或client证书时出错 RSA: CA:1.openssl genrsa -out ca-key.pem 1024 2.openssl req -new -out ca-req.csr -key ca-key.pem -config openssl.cnf 3.openssl x509 -req -in ca-req.csr -out ca-cert.pem -signkey ca-key.pem -days

.NET 使用OpenSSL生成的pem文件做为RSA Key时的读取问题

.NET的RSA算法的Key格式与OpenSSL生成的Key格式不兼容 谭振林兄有写一篇.NET使用OpenSSL生成的pem密钥文件(增加size为2048的密钥转换)[做电子商务的朋友可能需要] 但是其中在有些位长的Key的情况下,私钥的转换会出现问题 于是 找到另外一篇 Creating a X509 certificate from a RSA Private Key in PEM file 就可以比较好的解决RSA中的私钥转换问题  

OpenSSL生成根证书CA及签发子证书

系统:CentOS7 32位 目标:使用OpenSSL生成一个CA根证书,并用这个根证书颁发两个子证书server和client. 先确保系统中安装了OpenSSL,若没安装,可以通过以下命令安装: ? 1 sudo yum install openssl 修改OpenSSL的配置 安装好之后,定位一下OpenSSL的配置文件openssl.cnf: ? 1 locate openssl.cnf 如图,我这里的目录是/etc/pki/tls/openssl.cnf. 修改配置文件,修改其中的di

openssl生成证书

问题描述 请问大虾们,我的openssl在windows下安装好后,想在命令行下生成证书.当用genrsa命令生成密钥文件后,再用req命令生成证书时,出错,据说是要修改openssl.cnf文件,可我怎么也打不开这个文件,它以快捷方式图表存在.请教... 解决方案 解决方案二:你说的这个问题我没有遇到过.不过,再网上可以搜索到很多利用openssl生成证书的文章,例如http://blog.csdn.net/darkstar21cn/archive/2005/06/11/392492.aspx

使用OpenSSL生成证书

使用OpenSSL生成证书 下载安装openssl,进入/bin/下面,执行命令(把ssl目录下的openssl.cnf 拷贝到bin目录下)1.首先要生成服务器端的私钥(key文件):openssl genrsa -des3 -out server.key 1024[root@airwaySSL openssl]# cd ssl/[root@airwaySSL ssl]# pwd/home/openssl/ssl[root@airwaySSL ssl]# lscerts man misc op

请问如何使用openssl生成的rsa公钥对字符串加密

问题描述 最近正在研究关于C#的RSA加密解密,发现C#的RSA操作不是一般的复杂,在PHP中对RSA秘钥加密解密太容易了,可是在C#中我一直弄不来,求各位大神赐教.我发现C#的引入秘钥文件基本都是XML格式的,可是我找遍了网上也没有发现PEM格式的公钥如何转成XML文件.头大.我现在有一个公钥文件:比如-----BEGINPUBLICKEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+4wMxpYajfEuizAZxreikjQY0AjrtnKnnV

linux中openssl生成证书和自签证书

1.首先要生成服务器端的私钥(key文件):  代码如下 复制代码 openssl genrsa -des3 -out server.key 1024 运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施! 去除key文件口令的命令:  代码如下 复制代码 openssl rsa -in serve

Linux中利用openssl生成SSL证书给nginx使用

这里说下Linux 系统怎么通过openssl命令生成 证书.   首先执行如下命令生成一个4096位的key  代码如下 复制代码 openssl genrsa -des3 -out hupohost.key 4096 然后他会要求你输入这个key文件的密码.不推荐输入.因为以后要给nginx使用.每次reload nginx配置时候都要你验证这个PAM密码的.   由于生成时候必须输入密码.你可以输入后 再删掉  代码如下 复制代码 mv ssl.key xxx.key openssl rs

php利用openssl生成签名实例程序

  实例  代码如下   <?php       /**        * 根据原文生成签名内容        *        * @param string $data 原文内容        *        * @return string        */     function sign($strData)      {          $filePath = 'test.pfx';          if(!file_exists($filePath)) {