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

使用Python生成ECDSA非对称加密密钥对

发布时间:2023-12-17 12:26:49

ECDSA(椭圆曲线数字签名算法)是一种非对称加密算法,可以用于数字签名和密钥交换。Python提供了一个名为ecdsa的库,可以方便地生成ECDSA密钥对。

下面是一个使用Python生成ECDSA密钥对的例子:

import ecdsa
from ecdsa import SigningKey

# 生成一个新的ECDSA密钥对
sk = SigningKey.generate(curve=ecdsa.SECP256k1)
vk = sk.get_verifying_key()

# 将密钥对保存到文件
with open("private_key.pem", "wb") as f:
    f.write(sk.to_pem())

with open("public_key.pem", "wb") as f:
    f.write(vk.to_pem())

# 从文件中加载密钥对
with open("private_key.pem", "rb") as f:
    sk = SigningKey.from_pem(f.read())

with open("public_key.pem", "rb") as f:
    vk = VerifyingKey.from_pem(f.read())

# 使用私钥对消息进行签名
message = b"Hello, world!"
signature = sk.sign(message)

# 使用公钥验证签名
assert vk.verify(signature, message)
print("验证通过!")

在上面的代码中,我们首先导入ecdsa库,并调用SigningKey.generate方法生成一个新的ECDSA私钥。然后,我们调用get_verifying_key方法获取对应的公钥。接着,我们将密钥对保存到文件中,并使用from_pem方法从文件中加载密钥对。

接下来,我们使用私钥对消息进行签名,使用sign方法生成一个签名。最后,我们使用公钥对签名进行验证,使用verify方法进行验证。如果验证通过,则打印"验证通过!"。

ECDSA算法具有较高的安全性和效率,适用于各种加密和签名场景。使用Python的ecdsa库,我们可以方便地生成ECDSA密钥对并进行加密和签名操作。