aes加密后长度_如何用Python实现AES加密和解密

   希望大家明白一个道理:慢生活是有底气的自给自足,而不是好吃懒做的得过且过。

d2f9d4bc6dce128255593c162c480f3a.png

1、前言

在讲述如何实现之前,我们需要考虑两个问题。 一、什么是AES加密?          简单介绍下,AES是一种对称加密算法,它本身只有一个密钥,即用来实现加密,也用于解密。涉及到的模式分别是ECB模式、CBC模式、CFB模式、OFB模式、CTR模式其中常用到的就是CBC模式。有兴趣详细了解AES的同学,可以自行百度查阅。 二、为什么要用Python来实现AES加密解密? 举个爬虫采集时涉及到aes加密的例子

3a92289e60e7d7c29d3ca97311cce225.png

97a16252fe3f6c0af5aa75b264b4bcf7.png

上图为网易云音乐评论的部分加密js代码截图,使用了两层AES加密,要想做到解密,第一可以拿到涉及解密的js代码用python执行,第二整个加密解密过程转换成python来实现。两者对比而言js代码实现起来繁琐、易错,执行时需要先编译js代码,而转成python后,简单、方便、有效率。

2、AES加密解密

一、加密

import base64from Crypto.Cipher import AESdef aes_encrypt(key, data):    # 偏移量    vi = '0102030405060708'    # 字符串补位    pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16)    data = pad(data)    # 创建一个新的aes密码    cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8'))    # 使用密码对数据加密    encrypt_data = cipher.encrypt(data.encode('utf8'))    # 对加密后的数据进行base64编码后解码    return base64.b64encode(encrypt_data).decode('utf8')if __name__ == '__main__':    res = aes_encrypt('0CoJUm6Qyw8W8jud', 'pythonpythonpythonpythonpython')    print(res)
结果如下

783c7bc2f3a518bd0a70aeae942deb65.png

参数介绍:

  • key:密钥

  • vi:密斯偏移量

  • CBC:加密模式

  • data:加密或者解密数据

需要注意的是,对data字符串补位的时候要保证是16的倍数,而16这个数值是由key的长度来决定的,一般常见的key都是16位。

二、解密

import base64from Crypto.Cipher import AESdef aes_decrypt(key, data):    # 偏移量    vi = '0102030405060708'    # 字符串补位    un_pad = lambda s: s[0: -s[-1]]    # 创建一个新的aes密码    cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8'))    # 对需要解密的数据,先进行base64解码    decode_data = base64.decodebytes(data.encode('utf8'))    # 使用密码对数据解密    decrypt_data = cipher.decrypt(decode_data)    # 对加密后的数据去除补位    return un_pad(decrypt_data).decode('utf8')if __name__ == '__main__':    res = aes_decrypt('0CoJUm6Qyw8W8jud', 'Gvf2MNbz7LJFppO10oG4z589CqWFtL+8WRhF7ti69yg=')    print(res)
结果如下,成功解密

5a7a978334aefb4bdf11d578390448af.png

对你有帮助,请扫码关注!感谢!

816bf665dac01a9799e57ec34226eaf0.png

公众号:逆向旅行

微信号:fzcoder888888

定期分享Python进阶技术,爬虫

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值