不同的椭圆曲线可以用于进行通信和加密。以下是一个使用prime256v1和prime521v1椭圆曲线的示例代码:
import os
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import ec
# 生成prime256v1密钥对
private_key_p256 = ec.generate_private_key(ec.SECP256R1())
public_key_p256 = private_key_p256.public_key()
# 生成prime521v1密钥对
private_key_p521 = ec.generate_private_key(ec.SECP521R1())
public_key_p521 = private_key_p521.public_key()
# 保存prime256v1私钥
p256_private_pem = private_key_p256.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
with open('private_p256.pem', 'wb') as f:
f.write(p256_private_pem)
# 保存prime256v1公钥
p256_public_pem = public_key_p256.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
with open('public_p256.pem', 'wb') as f:
f.write(p256_public_pem)
# 保存prime521v1私钥
p521_private_pem = private_key_p521.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
with open('private_p521.pem', 'wb') as f:
f.write(p521_private_pem)
# 保存prime521v1公钥
p521_public_pem = public_key_p521.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
with open('public_p521.pem', 'wb') as f:
f.write(p521_public_pem)
上述代码使用了cryptography库来生成prime256v1和prime521v1密钥对,并将私钥和公钥保存为PEM格式的文件。你可以根据自己的需求使用这些密钥进行加密和通信。