python 實現RSA數字簽名


from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
from Crypto.Signature import PKCS1_v1_5 as Signature_pkcs1_v1_5
import base64

# 私鑰
private_key = '''-----BEGIN RSA PRIVATE KEY-----
5353dfggd
-----END RSA PRIVATE KEY-----
'''

# 公鑰
public_key = '''-----BEGIN PUBLIC KEY-----
hfgghftetet
-----END PUBLIC KEY-----'''
def rsa_sign(plaintext, hash_algorithm=Crypto.Hash.MD5):
    """RSA 數字簽名,私鑰進行簽名"""
    signer = Signature_pkcs1_v1_5.new(RSA.importKey(private_key))

    # hash算法必須要pycrypto庫里的hash算法,不能直接用系統hashlib庫,pycrypto是封裝的hashlib
    hash_value = hash_algorithm.new(plaintext.encode('utf-8'))
    signature = signer.sign(hash_value)
    signature = base64.b64encode(signature)
    return signature.decode()


def rsa_verify(sign, plaintext, hash_algorithm=Crypto.Hash.MD5):
    """校驗RSA 數字驗簽,公鑰進行驗簽"""
    sign = base64.b64decode(sign)
    hash_value = hash_algorithm.new(plaintext.encode('utf-8'))
    verifier = Signature_pkcs1_v1_5.new(RSA.importKey(public_key))
    return verifier.verify(hash_value, sign)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM