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

使用Python生成ECDSASECP256k1的椭圆曲线公钥和私钥实例

发布时间:2023-12-19 02:53:01

要使用Python生成ECDSASECP256k1的椭圆曲线公钥和私钥,可以使用Python的ecdsa库。以下是一个生成ECDSASECP256k1椭圆曲线公钥和私钥的示例:

import ecdsa

# 生成ECDSASECP256k1的椭圆曲线公钥和私钥
def generate_keys():
    # 创建SECP256k1的椭圆曲线对象
    curve = ecdsa.curves.SECP256k1
    # 创建ECDSA对象
    sk = ecdsa.SigningKey.generate(curve=curve)
    # 获取私钥
    private_key = sk.to_string().hex()
    # 获取公钥
    vk = sk.verifying_key
    # 获取未压缩形式的公钥
    uncompressed_public_key = vk.to_string().hex()
    # 获取压缩形式的公钥
    compressed_public_key = vk.to_string('compressed').hex()
    
    return private_key, uncompressed_public_key, compressed_public_key

# 生成公钥和私钥
private_key, uncompressed_public_key, compressed_public_key = generate_keys()

# 输出私钥
print("PrivateKey:", private_key)
# 输出未压缩形式的公钥
print("Uncompressed PublicKey:", uncompressed_public_key)
# 输出压缩形式的公钥
print("Compressed PublicKey:", compressed_public_key)

运行以上代码,将会输出类似以下结果:

PrivateKey: 7bf8aae5ca4725e7b612da790822d38e1f3e08e3b9da187a3b4cba635b3581f1
Uncompressed PublicKey: 04ee3b70a23989617bae8538eee6c191eac9dc8662bd9db86e7edc8f1ac5a7b8e975da34411e0e1144ff3dd9e9b0e2e54497e2d6e44d4927edba381224caf6e27
Compressed PublicKey: 02ee3b70a23989617bae8538eee6c191eac9dc8662bd9db86e7edc8f1ac5a7b8e9

从以上结果可以看出,私钥由一个256位的十六进制数表示。未压缩形式的公钥由一个以04开头的130位的十六进制数表示,其中前64位是x坐标,后64位是y坐标。压缩形式的公钥由一个以0203开头的66位的十六进制数表示,其中前64位是x坐标,y坐标的奇偶性由 个字节来表示。