欢迎访问宙启技术站
智能推送

在Python中实现ECDSASECP256k1的数字签名和验证的实用代码示例

发布时间:2023-12-19 02:54:52

在Python中,可以使用ecdsa库来实现ECDSA(Elliptic Curve Digital Signature Algorithm)数字签名和验证,其中ECDSA的曲线选择为SECP256k1。

首先,需要确保已经安装了ecdsa库。可以使用以下命令来安装该库:

pip install ecdsa

接下来,我们可以编写一个示例代码来进行数字签名和验证的实践。

import hashlib
import ecdsa

# 生成公钥和私钥
sk = ecdsa.SigningKey.generate(curve=ecdsa.SECP256k1)
vk = sk.get_verifying_key()

# 要签名的消息
message = b"Hello, world!"

# 对消息进行哈希
message_hash = hashlib.sha256(message).digest()

# 对消息进行签名
signature = sk.sign(message_hash)

# 验证签名
is_valid = vk.verify(signature, message_hash)

# 打印签名和验证结果
print("Signature: ", signature.hex())
print("Is Valid: ", is_valid)

上述代码首先使用ecdsa.SigningKey.generate()函数生成了一个私钥(签名密钥),然后使用该私钥生成了相应的公钥。然后,我们选择了一个要签名的消息并对其进行哈希。

接着,使用私钥对哈希后的消息进行签名,得到了一个签名值。最后,使用公钥对签名值和哈希后的消息进行验证,得到了一个验证结果。

在运行上述示例代码后,我们可以看到签名值和验证结果的输出。

注意:对于数字签名,私钥用于签名,公钥用于验证。确保私钥的安全存储以及只有授权的用户可以访问。