Python aes解密,python3 aes加密
随着网络爬虫的猖獗,各大网站为了最大限度的限制自己的数据收集,纷纷加入各种反爬虫手段,比如:
生成浏览器的UA指纹标识;使用各种验证方式(短信、滑块、点击汉字、点击)进行识别;这种防爬手段就是一层防御,类似于城堡的大门。只要突破了这道防线,你就可以为所欲为。
另外,还有一些网站会进行双层防御,对数据添加各种限制,比如混淆、加密等。这就好比我们进了城门,要进某某内城,就要经过腰牌,由大门口的官兵检查。
例如,某电商网站在其数据中使用AES加密,返回的数据如下图所示:
解密后,我们可以得到如下真实数据:
这是通过使用Python进行AES解密来实现的。下面,我们来介绍一下Python中数据的AES加密和AES解密。
文章目录
一、AES算法介绍以下内容来自网络,请大家看看。如果想了解更多,可以找专门的资料来研究:
AES被称为高级加密标准,是高级加密标准的首字母缩写。
AES加密标准,也称为Rijndael加密方法,是NIST的21世纪加密标准,旨在取代DES。AES的基本要求是采用对称分组密码系统。密钥长度可以是128、192或256位,块长度是128位。该算法应该容易在各种硬件和软件上实现。1998年,NIST开始了第一轮AES分析、测试和征集,有15个候选算法。[1]
1999年3月,第二轮AES2分析和测试完成。2000年10月2日,美国政府正式宣布选择比利时密码学家琼代蒙和文森特里门提出的加密算法Rijndael作为AES的加密算法。
AES加密数据块和密钥的长度可以是128b、192b和256b中的任何一个。AES加密有多轮重复和转换。步骤如下:密钥扩展;初赛;(3)重复轮次,每轮次包括逐字节减法、ShiftRows、MixColurmns、轮密钥加法等运算。最后一轮,没有列混合操作(MixColumns)。
二、AES加密这里我们选择AES加密算法中的CBC模式进行演示。
如前所述,AES加密算法的CBC模式通过key和offset的方式对数据进行加密,所以我们首先定义几个常用的参数,包括原始数据、key、offset和AES的CBC模式。代码如下:
A={name :州师,网址: zmister.com ,Desc :编程的实际应用 } #原始数据k= zmistercommiste 。编码( UTF-8 )# key iv=b 1234567890 asdfgh # offset mode=AES。MODE_CBC #添加Python学习qq裙:10667510送全套零基础学习资料教程。程序员的学习交流大本营在这里。我们设置的密钥长度是16位字符串,也就是128位字节。在AES加密算法中,密钥的长度必须是16位字符串(128字节)、34位字符串(192字节)和32位字符串(256字节)。
接下来,我们创建一个函数来加密原始数据:
# Encrypt data def crypt _ str(value):value=value . Encode( utf-8 )#用UTF-8 cryptor对数据进行编码=AES.new(k,mode,Iv) #创建一个新的AES实例length=16 count=len(value) #如果数据长度小于密钥长度,如果count length:add=(length-count)# \ 0退格文本=value (\ 0 * add)。encode(utf-8) elif计数长度:add=(length-(count % length))text=value( \ 0 * add)。encode( UTF-8 )cipher text=cipher . encrypt(text)#加密字符串print(原始加密数据:,密文)ciphertext _ hex=b2a _ hex(密文)#字符串转十六进制数据print(十六进制加密:,cipher _ hex)cipher _ hex _ de=cipher _ hex . decode()print(十六进制加密字符串:,cipher _ hex _ de)return cipher text _ hex _ de我们将原始数据传入其中运行,就可以得到加密数据,如下图所示:
用Python完成数据的AES加密后,我们继续用Python解密AES加密的数据。
第三,AES解密比AES加密简单得多。我们首先实例化一个AES类,然后将加密的十六进制数据转换成字符串形式,然后调用AES实例的decrypt()方法对数据进行解密,最后对解密后的数据进行解码得到原始数据。其代码如下:
# Decrypt data def Decrypt _ str(value):cryptor=aes . new(k,mode,Iv) #创建一个AES实例value_hex=a2b_hex(value) #将十六进制数据转换为字符串Plain _ text=cryptor . Decrypt(value _ hex)#解密字符串print (Decrypt data:,Plain _ text)print( decoding and decrypting data:,bytes。解码(纯文本)。rstrip (\ 0 ))返回字节。解码(纯文本)。rstrip (\ 0 )。我们将之前AES加密的数据作为参数传递给它并运行它,最后得到解密的
这样,我们就用Python完成了数据的AES加密和解密。
最后,在实际网站中,有可能数据不仅仅是用一种加密方法加密,更多的加密数据会被各种加密方法混淆加密。面对这种情况,首先要了解数据的加密过程,不能盲目尝试。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。