Tongsuo-Python-SDK基于Tongsuo密码库, 为Python应用提供密码学原语和安全传输协议的支持,目前以支持中国商用密码算法和安全协议为主。
SM2签名和验签,详见sm2_sign_verify.py
from tongsuopy.crypto import hashes, serialization
from tongsuopy.crypto.asymciphers import ec
msg = b"hello"
key = ec.generate_private_key(ec.SM2())
pem = key.public_key().public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo,
)
pubkey = serialization.load_pem_public_key(pem)
signature = key.sign(msg, ec.ECDSA(hashes.SM3()))
pubkey.verify(signature, msg, ec.ECDSA(hashes.SM3()))
SM2加密和解密,详见sm2_encrypt_decrypt_from_pem.py
from tongsuopy.crypto import serialization
from tongsuopy.crypto.asymciphers import ec
msg = b"hello"
key = ec.generate_private_key(ec.SM2())
pem = key.public_key().public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo,
)
pubkey = serialization.load_pem_public_key(pem)
ciphertext = pubkey.encrypt(msg)
decrypt_text = key.decrypt(ciphertext)
assert decrypt_text == msg
SM3杂凑,详见sm3.py
from tongsuopy.crypto import hashes
h = hashes.Hash(hashes.SM3())
h.update(b"abc")
res = h.finalize()
SM4-CBC加密,详见sm4_cbc.py
from tongsuopy.crypto.ciphers import Cipher, algorithms, modes
c = Cipher(algorithms.SM4(key), modes.CBC(iv))
enc = c.encryptor()
ciphertext = enc.update(plaintext)
ciphertext += enc.finalize()
SM4-GCM加密,详见sm4_gcm.py
from tongsuopy.crypto.ciphers import Cipher, algorithms, modes
c = Cipher(algorithms.SM4(key), modes.GCM(iv))
enc = c.encryptor()
enc.authenticate_additional_data(aad)
ciphertext = enc.update(plaintext)
ciphertext += enc.finalize()
pip install tongsuopy
要求Python >= 3.6。
- 支持SM2加密和解密
- 支持SM2签名和验签
- 支持SM3杂凑算法
- 支持SM4加解密,包括ECB、CBC、OFB、CFB、CTR模式
- 支持SM4-GCM和SM4-CCM
- [TODO] TLCP协议支持
欢迎加入铜锁社区交流群,使用钉钉扫描二维码或者钉钉内搜索群号44810299。