每天进步一点点-python如何进行签名及验签2【chatgpt写的】

发布时间 2023-03-23 10:18:05作者: Alive_2020
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA

def sign_data(data, private_key_path):
    with open(private_key_path, "r") as f:
        private_key = RSA.import_key(f.read())
    hash = SHA256.new(data.encode())
    signature = pkcs1_15.new(private_key).sign(hash)
    return signature

def verify_signature(data, signature, public_key_path):
    with open(public_key_path, "r") as f:
        public_key = RSA.import_key(f.read())
    hash = SHA256.new(data.encode())
    try:
        pkcs1_15.new(public_key).verify(hash, signature)
        return True
    except (ValueError, TypeError):
        return False

为了验证数据的完整性,我们需要对数据进行签名,然后在接收方对签名进行验证。签名是使用私钥生成的,而验证是使用公钥进行的。在Python中,我们可以使用pycryptodome库来实现签名和验证。下面是一个示例代码,它使用SHA-256哈希算法对数据进行签名和验证。

data参数是要签名的数据,它应该是一个字符串类型。例如,如果您要签名的数据是"Hello, world!",则可以将其传递给sign_data函数,如下所示

signature = sign_data("Hello, world!", "path/to/private_key.pem")