zoukankan      html  css  js  c++  java
  • 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 = 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)
    
    
    
    
    
    作者:IBinary


    坚持两字,简单,轻便,但是真正的执行起来确实需要很长很长时间.当你把坚持两字当做你要走的路,那么你总会成功. 想学习,有问题请加群.群号:725864912(收费)群名称: 逆向学习小分队 群里有大量学习资源. 以及定期直播答疑.有一个良好的学习氛围. 涉及到外挂反外挂病毒 司法取证加解密 驱动过保护 VT 等技术,期待你的进入。

    详情请点击链接查看置顶博客 https://www.cnblogs.com/iBinary/p/7572603.html
  • 相关阅读:
    java枚举enum
    冒泡排序、选择排序、插入排序、二分法排序、快速排序、二叉树排序、堆排序总结
    Django-tinymce富文本的使用
    Redis-基本操作总结
    git-总结大全
    css-总结
    html-table布局
    html表单示例
    html总结
    python-浅拷贝、深拷贝实例以及讲解
  • 原文地址:https://www.cnblogs.com/iBinary/p/14892706.html
Copyright © 2011-2022 走看看