前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实现128-ECB 解密

Python实现128-ECB 解密

作者头像
IBinary
发布2021-06-21 20:11:25
1.7K0
发布2021-06-21 20:11:25
举报
文章被收录于专栏:逆向技术逆向技术

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

AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个。(8比特 == 1字节)

在CBC、CFB、OFB、CTR模式下除了密钥外,还需要一个初始化向IV。(ECB模式不用IV) 转载于: 下面代码有详细注释可以根据自己需求来进行加解密. 代码如下:

代码语言:javascript
复制
from Crypto.Cipher import  AES as myaes
import  base64


class AESUtil:
    __BLOCK_SIZE_16 = BLOCK_SIZE_16 = myaes.block_size  #设置大小
    @staticmethod
    def encryt(str, key, iv):
        cipher = myaes.new(key, myaes.MODE_ECB,iv)
        x = AESUtil.__BLOCK_SIZE_16 - (len(str) % AESUtil.__BLOCK_SIZE_16) #16字节对齐
        if x != 0:
            str = str + chr(x)*x
        msg = cipher.encrypt(str)
        # msg = base64.urlsafe_b64encode(msg).replace('=', '')
        msg = base64.b64encode(msg)
        return msg

    @staticmethod
    def decrypt(enStr, key, iv):
        cipher = myaes.new(key.encode(), myaes.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)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-06-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档