Python實現128-ECB 解密


ES ECB模式加解密
使用cryptopp完成AES的ECB模式進行加解密。

AES加密數據塊分組長度必須為128比特,密鑰長度可以是128比特、192比特、256比特中的任意一個。(8比特 == 1字節)

在CBC、CFB、OFB、CTR模式下除了密鑰外,還需要一個初始化向IV。(ECB模式不用IV)
轉載於:
下面代碼有詳細注釋可以根據自己需求來進行加解密.
代碼如下:

from Crypto.Cipher import  AES as myaes
import  base64

class AESUtil:
    __BLOCK_SIZE_16 = BLOCK_SIZE_16 = AES.block_size  #設置大小
    def encryt(self,plant, key):
        if isinstance(key,str):
            key=key.encode('utf-8')
        cipher = AES.new(key, AES.MODE_ECB)
        x = AESUtil.__BLOCK_SIZE_16 - (len(plant) % AESUtil.__BLOCK_SIZE_16) #16字節對齊
        if x != 0:
            plant = plant + chr(0)*x #以zero方式補齊為16為
        msg = cipher.encrypt(plant)
        # msg = base64.urlsafe_b64encode(msg).replace('=', '')
        msg = base64.b64encode(msg)
        return msg
    def decrypt(self,enStr, key, iv):
        cipher = AES.new(key.encode(), AES.MODE_ECB)  #創建ecb模式
        # 要解密數據的時候我們事先數據已經經過base64編碼過了. 所以這里解密成bytes進行解密.如果直接是bytes則不用這行代碼了 所以這里需要先解碼為bytes
        decryptByts = base64.b64decode(enStr)
        msg = cipher.decrypt(decryptByts)
        return msg

if __name__ == "__main__":
    key = "abcdefghiiiiiasd"
    iv = ""
    anc = AESUtil()
    #blob文件是加密之后的二進制轉為的base64的字符串. 
    with ope("blob", 'rb') as f:
        data = f.read()
        res = anc.decrypt(data, key,iv);
        with open("blob1","wb") as w:
            w.write(res)





免責聲明!

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



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