欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

GMSSL模塊介紹

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

安裝模塊

pip install gmssl

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

SM2算法

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

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

1. 初始化CryptSM2

import base64
import binascii
from gmssl import sm2, func
#16進(jìn)制的公鑰和私鑰
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進(jìn)制
assert sm2_crypt.verify(sign, data) # 16進(jìn)制

SM4算法

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

gmssl是包含國密SM4算法的Python實(shí)現(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實(shí)現(xiàn)sm2和sm4國密(國家商用密碼)算法的示例的詳細(xì)內(nèi)容,更多關(guān)于python 實(shí)現(xiàn)國家商用密碼算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python 三邊測(cè)量定位的實(shí)現(xiàn)代碼

    python 三邊測(cè)量定位的實(shí)現(xiàn)代碼

    這篇文章主要介紹了python 三邊測(cè)量定位的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 利用Python和OpenCV庫將URL轉(zhuǎn)換為OpenCV格式的方法

    利用Python和OpenCV庫將URL轉(zhuǎn)換為OpenCV格式的方法

    這篇文章主要介紹了利用Python和OpenCV庫將URL轉(zhuǎn)換為OpenCV格式的方法,同時(shí)用到了NumPy和urllib,需要的朋友可以參考下
    2015-03-03
  • Python?Pandas中DataFrame.drop_duplicates()刪除重復(fù)值詳解

    Python?Pandas中DataFrame.drop_duplicates()刪除重復(fù)值詳解

    在實(shí)際處理數(shù)據(jù)中,數(shù)據(jù)預(yù)處理操作中,常常需要去除掉重復(fù)的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Python?Pandas中DataFrame.drop_duplicates()刪除重復(fù)值的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • python中resample函數(shù)實(shí)現(xiàn)重采樣和降采樣代碼

    python中resample函數(shù)實(shí)現(xiàn)重采樣和降采樣代碼

    今天小編就為大家分享一篇python中resample函數(shù)實(shí)現(xiàn)重采樣和降采樣代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • C語言中的結(jié)構(gòu)體在Python中實(shí)現(xiàn)轉(zhuǎn)換

    C語言中的結(jié)構(gòu)體在Python中實(shí)現(xiàn)轉(zhuǎn)換

    這篇文章主要為大家介紹了C語言中的結(jié)構(gòu)體在Python中實(shí)現(xiàn)轉(zhuǎn)換示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python運(yùn)維自動(dòng)化之nginx配置文件對(duì)比操作示例

    Python運(yùn)維自動(dòng)化之nginx配置文件對(duì)比操作示例

    這篇文章主要介紹了Python運(yùn)維自動(dòng)化之nginx配置文件對(duì)比操作,涉及Python針對(duì)文件的讀取、遍歷、比較進(jìn)而達(dá)到差異對(duì)比的相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • python繪制分組條形圖的示例代碼

    python繪制分組條形圖的示例代碼

    本文主要介紹了如何使用python繪制分組條形圖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 新手入門學(xué)習(xí)python Numpy基礎(chǔ)操作

    新手入門學(xué)習(xí)python Numpy基礎(chǔ)操作

    這篇文章主要介紹了新手入門學(xué)習(xí)python Numpy基礎(chǔ)操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • PyQt5中QTableWidget如何彈出菜單的示例代碼

    PyQt5中QTableWidget如何彈出菜單的示例代碼

    這篇文章主要介紹了PyQt5中QTableWidget如何彈出菜單的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • pytorch 中pad函數(shù)toch.nn.functional.pad()的用法

    pytorch 中pad函數(shù)toch.nn.functional.pad()的用法

    今天小編就為大家分享一篇pytorch 中pad函數(shù)toch.nn.functional.pad()的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01

最新評(píng)論