使用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坐标。压缩形式的公钥由一个以02或03开头的66位的十六进制数表示,其中前64位是x坐标,y坐标的奇偶性由 个字节来表示。
