python AES解密
小牛牛先生
博客专家认证 2017-09-15 04:38:22 python怎么对文字符串进行Base64解码 , 然后将其每个字节转为16进制显示模式,进行AES解密,最终得到一个utf-8编码的字符串。以下是我的代码,怎么解都不对,哪位大神能帮我看看啊
#encoding=utf-8
import time
import array
import md5
import base64
from Crypto.Cipher import AES
from Crypto import Random
#字符串密文
s='''
bcUqn0et4iBp3e0xu+KEHgqiiZXDsAiIc1S93EHXmPVKtyQQUJ8ehWcJQw4VnNIMeQXwsXE1lqnsmbtezfjmzrEvMFR6XB7qWBUFlFga9dsZdNnFZdYLmScwS48EC5Dkk0DG7fq2JcM3X7BKRx2GO20bVeVoCb9Or31KJm13sF8OolB8ZrQ/FfjNMlWS49Le
'''
s2=base64.decodestring(s)
#将字符串转成byte数组
str_byte=array.array('B',s2)
print str_byte
#将计算后得到的byte数组分别与0xff做&运算
str_list=""
for item in str_byte:
num=0xff & item
if num<16:
str_list+="0"+str(num)
else:
new_num=hex(item)
str_list+=new_num.replace("0x","")
new_s=str_list.upper()
#--------AES解密-----------------------
def decrypt(data, password):
bs =AES.block_size
if len(data) <= bs:
return data
unpad = lambda s : s[0:-ord(s[-1])]
iv = data[:bs]
cipher = AES.new(password, AES.MODE_CBC, iv)
data = unpad(cipher.decrypt(data[bs:]))
return data
password = 'lawyeecourtwensh' #16,24,32位长的密码
data=decrypt(new_s,password)
print data