上一篇文章介绍了RSA加密原理以及自己的一些理解,现在我们就来实际操作一下,使用python语言如何来实现RSA的加密—解密—签名—验签这一系列过程。
##一、生成公钥、私钥对
使用openssl工具生成RSA公钥、私钥对。
1.下载openssl工具。点我下载一,点我下载二
2.打开 openssl 文件夹下的 bin 文件夹,执行 openssl.exe 文件;
3.生成RSA私钥命令:
这里生成的密钥文件是2048比特。
genrsa -out rsa_private_key.pem 2048
4.生成RSA公钥命令:
注意,公钥和私钥是成对的,所以你在生成一个后,另一个的生成是基于前一个的文件名,否则生成的不是一对哦!!
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
生成后的文件应该在你的用户目录下,或者在openssl的bin文件夹下(有时候在有时又不在,真是搞不懂,反正你就在这两个地方都找一下,肯定在的)。
**5.这里介绍一下RSA密钥文件的规律,**文件名都是以.pem为后缀,生成的RSA密钥,可以看到都是
以-----BEGIN RSA PRIVATE KEY-----
开头,-----END RSA PRIVATE KEY-----
结尾的没有换行的字符串,这个就是原始的 RSA 私钥。
##二、安装python支持的加密库—pycryptodome
我用的python3.6版本,网上搜了一下,在python3.6之前的版本大部分是用pycrypto来进行加密的,而在python3.6之后,因无人维护pycrypto,所以改名为pycryptodome,这个库的强大之处在于,他是pycrypto库的扩展,用起来更加方便,更灵活啊~~功能杠杠滴
###1.安装pycryptodome
如果你安装了pip,那么就很简单了。
pip3 install pycryptodome
###2.将密钥文件导入到程序中。
from Crypto.PublicKey import RSA
# 读取标准的rsa公私钥pem文件
def load_rsa_file(fn):
key = None
try:
key = RSA.importKey(open(fn).read())
except Exception as