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)    收藏  举报

导航