在Python中生成公钥和私钥通常使用`cryptography`库,下面分别展示了如何生成RSA和ECC公私钥对:
生成RSA公私钥对
```python
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
生成RSA密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
)
获取公钥
public_key = private_key.public_key()
将密钥保存为PEM格式
private_pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
写入文件
with open('private.pem', 'wb') as f:
f.write(private_pem)
with open('public.pem', 'wb') as f:
f.write(public_pem)
生成ECC公私钥对```pythonfrom cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import serialization
生成ECC密钥对(SECP256R1曲线)
private_key = ec.generate_private_key(ec.SECP256R1())
获取公钥
public_key = private_key.public_key()
将密钥保存为PEM格式
private_pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
写入文件
with open('private.pem', 'wb') as f:
f.write(private_pem)
with open('public.pem', 'wb') as f:
f.write(public_pem)
以上代码示例展示了如何使用`cryptography`库生成RSA和ECC公私钥对,并将它们保存为PEM格式文件。您可以根据需要调整密钥长度和使用的曲线。

