美文网首页
python-RSA数字签名.md

python-RSA数字签名.md

作者: 未然猜 | 来源:发表于2019-10-10 10:30 被阅读0次

安装crypto模块

pip install pycryptodome

生成私钥(rsa-2048位-pkcs#1格式)

openssl genrsa -out private_key.pem 2048

生成公钥

openssl rsa -in private_key.pem -pubout -out public_key.pem

生成/校验签名

# !/usr/bin/python
# -*- coding: utf-8 -*-

from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA512


def rsa_sign(plaintext, private_file, hash_algorithm=SHA512):
    """RSA 数字签名"""
    private_key = open(private_file, 'rb').read()
    signer = PKCS1_v1_5.new(RSA.importKey(private_key))
    # hash算法必须要pycrypto库里的hash算法,不能直接用系统hashlib库,pycrypto是封装的hashlib
    hash_value = hash_algorithm.new(plaintext)   
    return signer.sign(hash_value)


def rsa_verify(sign, plaintext, public_file, hash_algorithm=SHA512):
    """校验RSA 数字签名"""
    public_key = open(public_file, 'rb').read()
    hash_value = hash_algorithm.new(plaintext)
    verifier = PKCS1_v1_5.new(RSA.importKey(public_key))
    return verifier.verify(hash_value, sign)


if __name__ == '__main__':
    message = 'RSA数字签名演示'
    # 生成签名
    signature = rsa_sign(message.encode(encoding='utf-8'), r'C:\Users\xuex\Desktop\private_key.pem')
    print(signature)
    # 验证签名
    result = rsa_verify(signature, message.encode('utf-8'), r'C:\Users\xuex\Desktop\public_key.pem')
    print(result)

相关文章

  • python-RSA数字签名.md

    安装crypto模块 生成私钥(rsa-2048位-pkcs#1格式) 生成公钥 生成/校验签名

  • 4.2 RSA数字签名技术

    数字签名技术 - RSA数字签名技术 RSA算法不仅是非对称加密算法,也是数字签名算法中的主力军,和MD、SHA系...

  • 网络安全:数字签名、数字证书

    数字签名 数字签名: 对报文摘要进行数字签署。详细的说就是对报文通过哈希(散列,如MD5)的方式计算报文摘要,发送...

  • 散列函数,sha1和md5

    信息摘要,数字签名,一致性对比。 什么是MD5,什么是SHA-1,如何校验这些Hash。还有拿单个ISO文件的MD...

  • 请求参数加密,在过滤filter中处理参数

    参数格式说明:1.reqmsg=业务数据 2.sign=MD5数字签名 接口实现思路:配置springboot...

  • nodeJS:MD5加密

    MD5 md5:不是一种加密算法,是用来做文件校验的 作用:让大容量信息在数字签名软件签署私人秘钥前被"压缩"成一...

  • 加密算法

    SHA1 相比 MD5 有什么优势吗? 数字签名 nonce和timestamp在Http安全协议中的作用 重放攻击

  • 各种加密算法比较

    各种加密算法比较 算法选择:对称加密AES,非对称加密: ECC,消息摘要: MD5,数字签名:DSA 对称加密算...

  • 011各种加密算法比较

    算法选择:对称加密AES,非对称加密: ECC,消息摘要: MD5,数字签名:DSA 对称加密算法(加解密密钥相同...

  • 安全算法梳理

    经常见到RSA、MD5、SHA系列算法,另外还有数字摘要、数字签名、数字证书等名词,以及对称加密与非对称加密。他们...

网友评论

      本文标题:python-RSA数字签名.md

      本文链接:https://www.haomeiwen.com/subject/wojopctx.html