使用Python實現AES(256)加密,ECB模式,pkcs7補全(AES五種加密模式(CBC、ECB、CTR、OCF、CFB))


AES加密方式有多種,根據實際情況而定,下述代碼為ECB模式,AES(256),pkcs7補全

Python3實現AES加密,需要安裝pycryptodome第三方庫。

安裝方式:

pip install pycryptodome

 

代碼:

from Crypto.Util.Padding import pad
from Crypto.Cipher import AES


def aes_cipher(key, aes_str):
    # 使用key,選擇加密方式
    aes = AES.new(key.encode('utf-8'), AES.MODE_ECB)
    pad_pkcs7 = pad(aes_str.encode('utf-8'), AES.block_size, style='pkcs7')  # 選擇pkcs7補全
    encrypt_aes = aes.encrypt(pad_pkcs7)
    # 加密結果
    encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8')  # 解碼
    encrypted_text_str = encrypted_text.replace("\n", "")
    # 此處我的輸出結果老有換行符,所以用了臨時方法將它剔除

    return encrypted_text_str


if __name__ == '__main__':
    # key的長度需要補長(16倍數),補全方式根據情況而定,此處我就手動以‘0’的方式補全的32位key
    # key字符長度決定加密結果,長度16:加密結果AES(128),長度32:結果就是AES(256)
    key = "ABCDEFGHIJKLMN000000000000000000"
    # 加密字符串長同樣需要16倍數:需注意,不過代碼中pad()方法里,幫助實現了補全(補全方式就是pkcs7)
    aes_str = "abc"
    encryption_result = aes_cipher(key, aes_str)
    print(encryption_result)

這里的方法是可以實現,AES五種加密模式(CBC、ECB、CTR、OCF、CFB)的

使用 AES.new()方法時,第二個參數可以選擇AES的不同的加密模式,根據需要選擇;
pad()方法的style參數(補全方式),同樣是可以靈活變動的
 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM