python sm2加解密
时间: 2023-08-02 12:04:12 浏览: 176
Python中的SM2加解密主要使用了Cryptography库。首先,我们需要安装Cryptography库。可以使用pip命令来安装:
```
pip install cryptography
```
接下来,我们可以使用以下代码示例进行SM2加解密:
```python
# 导入所需的库
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.serialization import Encoding, PublicFormat
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import padding
# 生成SM2密钥对
private_key = ec.generate_private_key(ec.SECP256K1(), default_backend())
public_key = private_key.public_key()
# 将公私钥保存为DER格式
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)
# 从DER文件加载公私钥
private_key = serialization.load_pem_private_key(private_pem, password=None, backend=default_backend())
public_key = serialization.load_pem_public_key(public_pem, backend=default_backend())
# 加密消息
message = b"Hello, world!"
ciphertext = public_key.encrypt(message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
))
# 解密消息
plaintext = private_key.decrypt(ciphertext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
))
print(plaintext.decode())
```
在这个示例中,我们首先生成了SM2密钥对,然后使用DER格式将公私钥保存到文件中。接着,我们加载了保存的公私钥,并使用公钥加密了消息,并使用私钥解密了密文,最后打印出了解密后的明文。
这就是使用Python进行SM2加解密的基本步骤。请注意,这个示例仅供参考,实际应用中可能需要根据具体情况进行调整。
阅读全文