最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)sm2和sm4國密(國家商用密碼)算法的示例

 更新時間:2020年09月26日 15:14:38   作者:小小咸魚YwY  
這篇文章主要介紹了python實現(xiàn)sm2和sm4國密(國家商用密碼)算法的示例,幫助大家使用python加密文件,感興趣的朋友可以了解下

GMSSL模塊介紹

GmSSL是一個開源的加密包的python實現(xiàn),支持SM2/SM3/SM4等國密(國家商用密碼)算法、項目采用對商業(yè)應用友好的類BSD開源許可證,開源且可以用于閉源的商業(yè)應用。

安裝模塊

pip install gmssl

https://github.com/duanhongyi/gmssl/blob/master/README.md官方文檔

SM2算法

RSA算法的危機在于其存在亞指數(shù)算法,對ECC算法而言一般沒有亞指數(shù)攻擊算法 SM2橢圓曲線公鑰密碼算法:我國自主知識產(chǎn)權(quán)的商用密碼算法,是ECC(Elliptic Curve Cryptosystem)算法的一種,基于橢圓曲線離散對數(shù)問題,計算復雜度是指數(shù)級,求解難度較大,同等安全程度要求下,橢圓曲線密碼較其他公鑰算法所需密鑰長度小很多。

gmssl是包含國密SM2算法的Python實現(xiàn), 提供了 encrypt、 decrypt等函數(shù)用于加密解密, 用法如下:

1. 初始化CryptSM2

import base64
import binascii
from gmssl import sm2, func
#16進制的公鑰和私鑰
private_key = '00B9AB0B828FF68872F21A837FC303668428DEA11DCD1B24429D0C99E24EED83D5'
public_key = 'B9C9A6E04E9C91F7BA880429273747D7EF5DDEB0BB2FF6317EB00BEF331A83081A6994B8993F3F5D6EADDDB81872266C87C018FB4162F5AF347B483E24620207'
sm2_crypt = sm2.CryptSM2(
  public_key=public_key, private_key=private_key)

2. encrypt和decrypt

#數(shù)據(jù)和加密后數(shù)據(jù)為bytes類型
data = b"111"
enc_data = sm2_crypt.encrypt(data)
dec_data =sm2_crypt.decrypt(enc_data)
assert dec_data == data

3. sign和verify

data = b"111" # bytes類型
random_hex_str = func.random_hex(sm2_crypt.para_len)
sign = sm2_crypt.sign(data, random_hex_str) # 16進制
assert sm2_crypt.verify(sign, data) # 16進制

SM4算法

國密SM4(無線局域網(wǎng)SMS4)算法, 一個分組算法, 分組長度為128bit, 密鑰長度為128bit, 算法具體內(nèi)容參照SM4算法。

gmssl是包含國密SM4算法的Python實現(xiàn), 提供了 encrypt_ecb decrypt_ecb、 encrypt_cbc、 decrypt_cbc等函數(shù)用于加密解密, 用法如下:

1. 初始化CryptSM4

from gmssl.sm4 import CryptSM4, SM4_ENCRYPT, SM4_DECRYPT

key = b'3l5butlj26hvv313'
value = b'111' # bytes類型
iv = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' # bytes類型
crypt_sm4 = CryptSM4()

2. encrypt_ecb和decrypt_ecb

crypt_sm4.set_key(key, SM4_ENCRYPT)
encrypt_value = crypt_sm4.crypt_ecb(value) # bytes類型
crypt_sm4.set_key(key, SM4_DECRYPT)
decrypt_value = crypt_sm4.crypt_ecb(encrypt_value) # bytes類型
assert value == decrypt_value

3. encrypt_cbc和decrypt_cbc

crypt_sm4.set_key(key, SM4_ENCRYPT)
encrypt_value = crypt_sm4.crypt_cbc(iv , value) # bytes類型
crypt_sm4.set_key(key, SM4_DECRYPT)
decrypt_value = crypt_sm4.crypt_cbc(iv , encrypt_value) # bytes類型
assert value == decrypt_value

以上就是python實現(xiàn)sm2和sm4國密(國家商用密碼)算法的示例的詳細內(nèi)容,更多關于python 實現(xiàn)國家商用密碼算法的資料請關注腳本之家其它相關文章!

相關文章

最新評論

潜江市| 工布江达县| 贵德县| 雷州市| 望谟县| 莱阳市| 吉水县| 霍林郭勒市| 玉屏| 宾川县| 汉阴县| 明水县| 崇礼县| 衡水市| 五莲县| 牟定县| 阳曲县| 土默特左旗| 和政县| 阿瓦提县| 蒲江县| 申扎县| 高碑店市| 临夏市| 马关县| 景德镇市| 云和县| 泾阳县| 丘北县| 瑞昌市| 涟水县| 泽库县| 明溪县| 万全县| 瑞昌市| 巴南区| 铜陵市| 京山县| 肥西县| 灵山县| 黑龙江省|