赞
踩
公钥和私钥的生成方式可以参考上篇文章:
Python——Crypto库实现公钥加密私钥解密
import base64
from Crypto.Hash import SHA1
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
with open('rsa.key', 'r') as f:
private_key = f.read()
rsa_key_obj = RSA.importKey(private_key)
signer = PKCS1_v1_5.new(rsa_key_obj)
# 先以单向加密方式通过某种哈希算法(如MD5,SHA1等)对要发送的数据生成摘要信息(数据指纹)
digest = SHA1.new()
digest.update(message.encode())
# 然后发送方用自己密钥对中的私钥对这个摘要信息进行加密,生成签名信息
signature = base64.b64encode(signer.sign(digest))
print('signature info: ', signature)
# 验证签名, NEED: message,signature
with open('rsa.pub', 'r') as f:
public_key = f.read()
# 数据接收方用发送的公钥对加密后的摘要信息进行解密,得到数据摘要的明文A
rsa_key_obj = RSA.importKey(public_key)
signer = PKCS1_v1_5.new(rsa_key_obj)
# 数据接收方再通过相同的哈希算法计算得到数据摘要信息B
digest = SHA1.new(message.encode())
# 对比数据摘要A与数据摘要B,如果两者一致说明数据没有被篡改过
is_ok = signer.verify(digest, base64.b64decode(signature))
print('is ok: ', is_ok)
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。