每天进步一点点-python如何进行签名及验签2【chatgpt写的】
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")
人生苦短,我用python!