当前位置:   article > 正文

Python——Crypto库实现私钥签名公钥验签_crypto.sign

crypto.sign

公钥和私钥的生成方式可以参考上篇文章:
Python——Crypto库实现公钥加密私钥解密

导入相关包

import base64
from Crypto.Hash import SHA1
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
  • 1
  • 2
  • 3
  • 4

私钥签名

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

公钥验签

# 验证签名, 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

效果展示

在这里插入图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号