博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python加密—AES加密解密
阅读量:6884 次
发布时间:2019-06-27

本文共 1430 字,大约阅读时间需要 4 分钟。

hot3.png

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'

加密代码如下:

import jsonimport binasciifrom Crypto.Cipher import AES
BS = 16def padding(s):    return s + (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

解密代码如下:

def unpadding(s):    return s[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模式不需要初始向量

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/xxWang/blog/720102

你可能感兴趣的文章
Linux 查询服务数据
查看>>
【Luogu 2014】选课
查看>>
CSS 的介绍
查看>>
Latex自定义文档纸张大小
查看>>
2018QBXT刷题游记(23)
查看>>
函数递归
查看>>
android框架Java API接口总注释/**@hide*/和internal API
查看>>
20175318 2018-2019-2 《Java程序设计》第七周学习总结
查看>>
比特币:一种点对点的电子现金系统
查看>>
Android - 按钮组件详解
查看>>
MEF简单学习笔记
查看>>
Srping - bean的依赖注入(Dependency injection)
查看>>
NSAutoreleasePool 用处
查看>>
import matplotlib.pyplot as plt出错
查看>>
常用集合与Dictionary用例
查看>>
MVC
查看>>
AI - TensorFlow - 张量(Tensor)
查看>>
js table 导出 Excel
查看>>
AHSC DAY2总结
查看>>
java.lang.SecurityException: class "javax.servlet.FilterRegistration"(spark下maven)
查看>>