专栏首页逆向技术Python实现128-ECB 解密

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)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java使用AES加密解密 AES-128-ECB加密

    故久
  • java使用AES加密解密 AES-128-ECB加密

    故久
  • 常见对称加密

    对称加密最直接的一句话概述就是:加密密钥与解密密钥完全相等,所以叫对称加密。常见的对称加密有DES、Triple DES、AES、PBE等。

    java乐园
  • java加解密实例

    codecraft
  • python笔记43-加解密AES/CBC/pkcs7padding

    有些公司对接口的安全要求比较高,传参数的时候,不会明文的传输,先对接口加密,返回的数据也加密返回。

    上海-悠悠
  • iOS逆向(2)-密码学(Hash&对称加密)

    原文地址:https://juejin.im/post/5c7e72cd6fb9a049fc044519”

    iOSSir
  • PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】

    本文实例讲述了PHP7实现和CryptoJS的AES加密方式互通。分享给大家供大家参考,具体如下:

    砸漏
  • nodejs使用aes-128-ecb加密如何在c#中解密

    却发现C#端怎么也解密不了,一直报错,改了一整天,后来终于发现,nodejs端加密用的key其实在使用之前已经使用md5加密了一次,而这个操作是默认的,暂时没发...

    frontoldman
  • Android O中对TEE加解密算法的新要求

    我们都知道,Android中keystore机制中的keymaster需要在TEE实现。Google关于Android后续版本中keymaster中的加解密算法...

    安智客
  • PHP AES加密和解密

    八神太一
  • 写给开发人员的实用密码学 - 对称加密算法

    所谓数据加密,就是将一段数据处理成无规则的数据,除非有关键的密钥,否则谁也无法得知无规则数据的真实含义。

    云水木石
  • DES ECB加解密的Java实现

    [2020-08-12 16:04:15.037]# RECV HEX FROM 117.136.81.93 :51423> C4 FC 35 4A 83 E...

    ccf19881030
  • AES 高级加密标准

    The Advanced Encryption Standard (AES), also known by its original name Rijndael...

    vanguard
  • nodejs与javascript中的aes加密

    简介 1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世...

    Java中文社群-磊哥
  • SM4加密解密

    https://baike.baidu.com/item/SM4.0/3901780

    bug专8
  • Go加密算法总结

    它是一种数据编码方式,虽然是可逆的,但是它的编码方式是公开的,无所谓加密。本文也对Base64编码方式做了简要介绍。

    常见_youmen
  • 循序渐进学加密

    还记得上初二的那年夏天,班里来了一个新同学,他就住在我家对面的楼里,于是我们一起上学放学,很快便成了最要好的朋友。我们决定发明一套神秘的沟通方式,任何人看到都不...

    知识与交流
  • 【进阶之路】SM4国密算法与实现

    .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:...

    南橘
  • PHP的Mcrypt加密扩展知识了解

    今天我们来学习的是 PHP 中的一个过时的扩展 Mcrypt 。在 PHP7 之前,这个扩展是随 PHP 安装包一起内置发布的,但是现在新版本的 PHP 中已经...

    硬核项目经理

扫码关注云+社区

领取腾讯云代金券