SM2算法加密解密 “Hello,SM2" python实现
时间: 2024-12-11 13:12:38 浏览: 54
好的,我来为您介绍SM2算法加密解密"Hello,SM2"的Python实现。
SM2是一种基于椭圆曲线的公钥密码算法,是中国自主研发的加密算法标准。下面是一个使用Python实现SM2加密和解密"Hello,SM2"的示例代码:
```python
from gmssl import sm2, func
# 生成SM2密钥对
def generate_key_pair():
sm2_crypt = sm2.CryptSM2(public_key=None, private_key=None)
private_key = sm2_crypt.generate_private_key()
public_key = sm2_crypt.get_public_key(private_key)
return public_key, private_key
# SM2加密
def sm2_encrypt(public_key, message):
sm2_crypt = sm2.CryptSM2(public_key=public_key, private_key=None)
encrypt_bytes = sm2_crypt.encrypt(message.encode())
return encrypt_bytes.hex()
# SM2解密
def sm2_decrypt(private_key, ciphertext):
sm2_crypt = sm2.CryptSM2(public_key=None, private_key=private_key)
decrypt_bytes = sm2_crypt.decrypt(bytes.fromhex(ciphertext))
return decrypt_bytes.decode()
# 主函数
def main():
message = "Hello,SM2"
# 生成密钥对
public_key, private_key = generate_key_pair()
# 打印密钥
print(f"公钥: {public_key}")
print(f"私钥: {private_key}")
# 加密
ciphertext = sm2_encrypt(public_key, message)
print(f"密文: {ciphertext}")
# 解密
decrypted_text = sm2_decrypt(private_key, ciphertext)
print(f"解密后的文本: {decrypted_text}")
if __name__ == "__main__":
main()
```
这段代码实现了以下功能:
1. 生成SM2密钥对
2. 使用公钥进行SM2加密
3. 使用私钥进行SM2解密
代码中使用了`gmssl`库,这是一个Python实现的国密算法库。你可以通过pip安装:
```
pip install gmssl
```
运行这段代码,你会看到类似如下的输出:
```
公钥: 04a9f...
私钥: 00c1...
密文: 3a1b...
解密后的文本: Hello,SM2
```
这段代码展示了SM2算法的基本加密和解密过程。在实际应用中,你需要安全地管理和存储密钥对,不能像示例中这样直接打印出来。
阅读全文