python中cryptography 的sm2的调用样例
时间: 2024-10-18 22:20:14 浏览: 37
在Python中,`cryptography`库提供了一个模块叫做`cryptography.hazmat.primitives.asymmetric.sm2`,用于处理SM2算法(中国国家密码局推荐的椭圆曲线公钥加密算法)。以下是一个基本的SM2密钥对生成、加密解密以及签名验签的调用样例:
```python
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import sm2
# 导入必要的支持
backend = default_backend()
# 生成一个新的SM2私钥和公钥
private_key = sm2.generate_private_key(sm2.SM2PrivateKey.generate(), backend)
public_key = private_key.public_key()
# 加密消息(使用公钥)
message = "Hello, World!"
encrypted_message = public_key.encrypt(message.encode(), backend)
# 解密消息(使用私钥)
decrypted_message = private_key.decrypt(encrypted_message, backend).decode()
print(f"Decrypted message: {decrypted_message}")
# 签名数据(使用私钥)
signature = private_key.sign(b'sign this data', backend)
# 验证签名(使用公钥)
is_valid = public_key.verify(signature, b'sign this data', backend)
print(f"Signature is valid: {is_valid}")
```
阅读全文