非对称加密算法也叫<公开密钥算法>,不同于对称加密算法,非对称加密算法加密密钥与解密密钥不是一把密钥、非对称密钥对中公钥是可以公开的。
这种算法如果使用公钥进行加密,则只能使用相应的私钥解密;如使用私钥加密,也只能使用相应的公钥解密。而要想通过公钥推导出私钥几乎是不可能的(这样的算法可以使用一些不可逆函数实现)!
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命令,她可以用来管理密钥文件。