sm2加密代码
时间: 2023-07-09 15:10:56 浏览: 126
以下是一个简单的 Python 实现 SM2 加密算法的代码:
```python
import binascii
import hashlib
import os
from Cryptodome.Cipher import AES
from Cryptodome.Cipher import SM4
from Cryptodome.Util.Padding import pad
from gmssl import sm2, func
def sm2_encrypt(public_key, plaintext):
sm2_crypt = sm2.CryptSM2(public_key=public_key)
ciphertext = sm2_crypt.encrypt(plaintext.encode('utf-8'))
return binascii.b2a_hex(ciphertext).decode('utf-8')
if __name__ == '__main__':
# 生成 SM2 密钥对
sm2_crypt = sm2.CryptSM2()
private_key = sm2_crypt.get_privkey()
public_key = sm2_crypt.get_pubkey()
# 要加密的明文
plaintext = 'Hello, World!'
# SM2 加密
ciphertext = sm2_encrypt(public_key, plaintext)
print('Private Key: ', binascii.b2a_hex(private_key).decode('utf-8'))
print('Public Key: ', binascii.b2a_hex(public_key).decode('utf-8'))
print('Plaintext: ', plaintext)
print('Ciphertext: ', ciphertext)
```
需要注意的是,该代码使用了 `gmssl` 库来实现 SM2 加密算法,因此需要先安装该库:
```bash
pip install gmssl
```
另外,为了方便起见,该代码还使用了 `Cryptodome` 库来实现 AES 和 SM4 算法,以及 PKCS7 填充。如果你不需要这些功能,可以将相关代码删除。
阅读全文