python实现rsa非对称加密解密签名及验证代码
代码语言:python
所属分类:其他
代码描述:python实现rsa非对称加密解密签名及验证代码
代码标签: python rsa 非对称 加密 解密 签名 验证 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#!/usr/local/python3/bin/python3 # -*- coding: utf-8 -* import base64 from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as Cipher_PKC from Crypto import Random from Crypto.Hash import SHA256 from Crypto.Signature import PKCS1_v1_5 as Signature_PKC class HandleRSA(): def create_rsa_key(self): """ 创建RSA密钥 步骤说明: 1、从 Crypto.PublicKey 包中导入 RSA,创建一个密码 2、生成 1024/2048 位的 RSA 密钥 3、调用 RSA 密钥实例的 exportKey 方法,传入密码、使用的 PKCS 标准以及加密方案这三个参数。 4、将私钥写入磁盘的文件。 5、使用方法链调用 publickey 和 exportKey 方法生成公钥,写入磁盘上的文件。 """ # 伪随机数生成器 random_gen = Random.new().read # 生成秘钥对实例对象:1024是秘钥的长度 rsa = RSA.generate(1024, random_gen) # Server的秘钥对的生成 private_pem = rsa.exportKey() with open("server_private.pem", "wb") as f: f.write(private_pem) public_pem = rsa.publickey().exportKey() with open("server_public.pem", "wb") as f: f.write(public_pem) # Client的秘钥对的生成 private_pem = rsa.exportKey() with open("client_private.pem", "wb") as f: f.write(private_pem) public_pem = rsa.publickey().exportKey() with open("client_public.pem", "wb") as f: f.write(public_pem) # Server使用Client的公钥对内容进行rsa 加密 def encrypt(self, plaintext): """ client 公钥进行加密 plaintext:需要加密的明文文本,公钥加密,私钥解密 """ # 加载公钥 rsa_key = RSA.import_key(open("client_public.pem").read() ) # 加密 cipher_rsa = Cipher_PKC.new(rsa_key) en_data = cipher_rsa.encrypt(plaintext.encode("utf-8")) # 加密 # base64 进行编码 base64_text = base64.b64encode(en_data) return base64_text.decode() # 返回字符串 # Client使用自己的私钥对内容进行rsa 解密 def decrypt(self, en_data): """ en_data:加密过后的数据,传进来是一个字符串 """ # base64 解码 base64_data = base64.b64decode(en_data.encode("utf-8")) # 读取私钥 private_key = RSA.import_key(open("client_private.pem").read()) # 解密 cipher_rsa = Cipher_PKC.new(private_key) data = cipher_rsa.decrypt(base64_data,None) return data.decode() # Server使用自己的私钥对内容进行签名 def.........完整代码请登录后点击上方下载按钮下载查看
网友评论0