文档章节

Python加密—AES加密解密

xinxin_
 xinxin_
发布于 2016/07/29 15:17
字数 260
阅读 261
收藏 0

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'

加密代码如下:

import json
import binascii
from Crypto.Cipher import AES
BS = 16

def 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模式不需要初始向量

 

 

 

 

 

 

 

 

 

 

© 著作权归作者所有

xinxin_
粉丝 4
博文 82
码字总数 16427
作品 0
南京
程序员
私信 提问
C/S 架构的加密通信库 - Python-SecureHTTP

说在前面: 在HTTP协议中,传输数据是明文,被第三方截获后很容易看出数据,所以现在主流建议是HTTPS加密传输,如Chrome,新版本用HTTP会提示不安全。 除此之外,我们也可以约定一种或多种加...

匿名
01/18
0
0
python3中Crypto的AES和RSA

RSA加密一般使用,AES加密一般使用。但中的需要自己进行填充。 生产RSA的公钥和私钥 RSA加解密 AES加密 文章到这里就全部讲述完啦,若有其他需要交流的可以留言哦!! 想阅读作者的更多文章,...

静默加载
2018/08/28
0
0
Skr!如何用 Python 爬取中国新说唱热门歌曲?

作者 | 初一 责编 | 郭芮 之前风靡朋友圈的“skr”流行语把中国新说唱这一节目带上了热议高峰,本文就来分析下,如何用Python爬取大受欢迎的说唱歌曲。 首先登录https://music.163.com/ 网易...

CSDN资讯
2018/10/03
0
0
使用python进行加密解密AES算法

在此我们将使用到PyCrypto模块,可以访问 http://www.pycrypto.org/ 来获得此模块。该模块包括多种加密算法,如AES、MD5、SHA等,我们可以访问https://www.dlitz.net/software/pycrypto/api...

kjpioo
2013/08/01
0
0
iGO实现之路 —— Security

本文为转载,原文:iGO实现之路 —— Security Golang 介绍 在我们写代码的过程中,可能会遇到很多的数据安全问题。比如我们在后端进行http请求的时候,url编码问题;用户登录密码数据库的保...

ChainZhang
2018/01/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
1
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
2
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部