在当今数字化时代,Python数字签名技术被广泛应用于软件分发、电子合同、API认证等场景,确保数据的完整性与身份的真实性。本文将带你从零开始,使用RSA签名算法在Python中实现数字签名和验证,即使你是编程小白也能轻松上手!
数字签名是一种用于验证数字信息真实性和完整性的技术。它类似于现实生活中的手写签名,但更加安全可靠。通过Python加密解密机制,发送方使用私钥对消息生成签名,接收方则用公钥验证该签名是否合法。
我们将使用Python的 cryptography 库来实现RSA数字签名。首先,请在终端中运行以下命令安装该库:
pip install cryptography 数字签名需要一对密钥:私钥(用于签名)和公钥(用于验证)。我们先用代码生成它们:
from cryptography.hazmat.primitives.asymmetric import rsafrom cryptography.hazmat.primitives import serialization# 生成私钥private_key = rsa.generate_private_key( public_exponent=65537, key_size=2048,)# 从私钥导出公钥public_key = private_key.public_key()# 将私钥序列化为PEM格式(可保存到文件)pem_private = private_key.private_bytes( encoding=serialization.Encoding.PEM, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption())# 将公钥序列化为PEM格式pem_public = public_key.public_bytes( encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo)print("私钥:\n", pem_private.decode())print("公钥:\n", pem_public.decode()) 接下来,我们使用私钥对一段文本消息生成数字签名:
from cryptography.hazmat.primitives import hashesfrom cryptography.hazmat.primitives.asymmetric import paddingmessage = b"Hello, this is a secure message!"# 使用私钥签名signature = private_key.sign( message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256())print("生成的签名(十六进制):")print(signature.hex()) 接收方拿到原始消息、签名和公钥后,即可验证签名是否有效:
try: public_key.verify( signature, message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() ) print("✅ 签名验证成功!消息未被篡改。")except Exception as e: print("❌ 签名验证失败!", str(e)) 下面是一个完整的可运行示例,适合初学者直接复制测试:
from cryptography.hazmat.primitives.asymmetric import rsa, paddingfrom cryptography.hazmat.primitives import hashes, serialization# 1. 生成密钥对private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)public_key = private_key.public_key()# 2. 定义要签名的消息message = b"This is my important document."# 3. 签名signature = private_key.sign( message, padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256())# 4. 验证try: public_key.verify( signature, message, padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256() ) print("✅ 数字签名验证通过!")except: print("❌ 数字签名无效!") 通过本篇数字签名教程,你已经掌握了如何在Python中使用RSA算法实现安全的数字签名与验证。这项技术是构建可信系统的基础,无论你是开发Web API、区块链应用还是安全通信工具,都离不开它。记住:私钥必须严格保密,而公钥可以自由分发。
关键词回顾:Python数字签名、RSA签名算法、数字签名教程、Python加密解密。
本文由主机测评网于2025-12-21发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251210921.html