python 实现 rsa 算法加解密密码
python版本:2.7
需要用到的模块:pycrypto
模块下载地址:https://pypi.org/project/pycrypto/#files
私钥和公钥的准备:
在进行RSA加密前,我们先要准备好私钥和公钥。
首先,在命令行执行以下命令以生成一个RSA密钥对:openssl genrsa -aes256 -out rsa-key.pem 2048
根据提示输入密码,这个密码是用来加密RSA密钥的,加密方式指定为AES256,生成的RSA的密钥长度是2048位。执行成功后,我们获得了加密的rsa-key.pem文件。
第二步,通过上面的rsa-key.pem加密文件,我们可以导出原始的私钥,命令如下:openssl rsa -in rsa-key.pem -outform PEM -out rsa-prv.pem
输入第一步的密码,我们获得了解密后的私钥。
类似的,我们用下面的命令导出原始的公钥:openssl rsa -in rsa-key.pem -outform PEM -pubout -out rsa-pub.pem
这样,我们就准备好了原始私钥文件rsa-prv.pem和原始公钥文件rsa-pub.pem,编码格式均为PEM。
源码:
#!/usr/bin/python
#-*-coding:UTF-8-*-
from Crypto.PublicKey import RSA as rsa
from Crypto.Cipher import PKCS1_v1_5
import base64
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def encryption(password):
with open('rsa-pub.pem','rb') as f:
pubkey = f.read()
rsakey = rsa.importKey(pubkey)
cipher = PKCS1_v1_5.new(rsakey)
cipher_text = base64.b64encode(cipher.encrypt(password.encode(encoding="utf-8")))
print(cipher_text)
def decryption(password):
with open('rsa-prv.pem','rb') as f:
prvkey = f.read()
rsakey = rsa.importKey(prvkey)
cipher = PKCS1_v1_5.new(rsakey)
text = cipher.decrypt(base64.b64decode(password), "ERROR")
print(text)
if __name__ == '__main__':
password = sys.argv[1].encode('utf-8')
method = sys.argv[2]
if method =='1':
encryption(password)
elif method =='2':
decryption(password)
else:
print('Parameter entry error!')
使用方法:
python <文件名>.py <密码> <方法>
<密码>:原文或者加密后的密码
<方法>:1为加密,2为解密
posted on 2019-03-18 10:59 DoubleUncle 阅读(735) 评论(0) 收藏 举报
浙公网安备 33010602011771号