您的位置:首页 > 编程语言 > Python开发

Python加密—AES加密解密

2016-07-29 00:00 441 查看
摘要:使用pycrypto库进行AES加密,解密,

pycrypto库:https://pypi.python.org/pypi/pycrypto/

对业务数据进行AES加密表示成十六进制字符串进行传输。

加密算法参数:

密钥的大小(以位为单位)KeySize=128

操作块大小(以位为单位)BlockSize=128

加密模式CipherMode.CBC

填充模式PaddingMode.PKCS7或PaddingMode.PKCS5

注:key与iv为十六进制字符串,长度为32字符,转成字节长度是16字节

加密前业务数据:

code={ "key1":"key1", "key2":"key2", "key3":"key3", "key4":"key4", }
key='7A9B48C4960551045B467B89015B528E' iv='787B4DD7A9229B3316A6868F537468D5'
加密代码如下:

importjson importbinascii fromCrypto.CipherimportAES
BS=16 defpadding(s): returns+(BS-len(s)%BS)*chr(BS-len(s)%BS) key=binascii.unhexlify(key) iv=binascii.unhexlify(iv) code=json.dumps(code) obj=AES.new(key,AES.MODE_CBC,iv) cipher_code=obj.encrypt(padding(code)) aes_code=binascii.hexlify(cipher_code).decode() print('加密:',aes_code)
运行结果:

加密:b3eda8d1b762d1784b520a7d11d774d765e2c920b1b996c130d3c3e884e8b16ec431ac98457b2e5e47e5feaf2eadc702e9465534e9abb66ad1bb2135d0a153fbc67dfc6067462db65a390b45818ea734

解密代码如下:

defunpadding(s): returns[0:-ord(s[-1])]
s='b3eda8d1b762d1784b520a7d11d774d765e2c920b1b996c130d3c3e884e8b16ec431ac98457b2e5e47e5feaf2eadc702e9465534e9abb66ad1bb2135d0a153fbc67dfc6067462db65a390b45818ea734'
obj=AES.new(key,AES.MODE_CBC,iv) encrypted=obj.decrypt(binascii.unhexlify(s)) decryption_code=unpadding(encrypted.decode()) print('解密:',decryption_code)
运行结果:

解密:{"key4":"key4","key1":"key1","key3":"key3","key2":"key2"}

注:CBC模式不需要初始向量

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: