python AES对称加密示例
来源:互联网 发布:安卓手机仿windows桌面 编辑:程序博客网 时间:2024/05/01 07:26
基本概念:
高级加密标准(英语:Advanced Encryption Standard,缩写:AES)
注意点:
1.字符集处理
2.秘钥的生成,建议按照某种规则产生,比如对用户id进行一定规则加工后,进行md5计算,再从中取出16个字节,这样每条数据的加密秘钥不一样,防止被碰撞
3.秘钥的长度,key可以是16/24/32 位长度, 其对应为 AES-128,AES-196 和 AES-256
4.测试源码的加密方式仅限于在服务器加解密,比如存到数据库前进行加密,防脱裤
测试源码:
#!/usr/bin/env python#coding=utf8from Crypto.Cipher import AESfrom Crypto import Random# AES根据16位对齐BS = 16# 转成utf8编码def unicode_to_utf8(s): if isinstance(s, unicode): s = s.encode("utf-8") return s# 补充字符,最少1个def pad(s): length = len(s) add = BS - length % BS byte = chr(BS - length % BS) return s + (add * byte)# 去除补充字符def unpad(s): length = len(s) byte = s[length-1:] add = ord(byte) return s[:-add]# classclass AESCipher: #初始化 def __init__(self, key): self.key = key #加密 def encrypt(self, raw): raw = unicode_to_utf8(raw) raw = pad(raw) cipher = AES.new(self.key, AES.MODE_CBC, self.key) return cipher.encrypt(raw) #解密 def decrypt(self, enc): cipher = AES.new(self.key, AES.MODE_CBC, self.key) return unpad(cipher.decrypt(enc))if __name__ == '__main__': #注意key是16字节长 key = "f2c85e0140a47415" #初始化 aes = AESCipher(key) s1 = "hello world" s2 = "带鱼拯救世界" s3 = "~!@#$%^&" s4 = u"~!@#¥%……&带鱼拯救world" en1 = aes.encrypt(s1) de1 = aes.decrypt(en1) en2 = aes.encrypt(s2) de2 = aes.decrypt(en2) en3 = aes.encrypt(s3) de3 = aes.decrypt(en3) en4 = aes.encrypt(s4) de4 = aes.decrypt(en4) print 's1:', de1 print 's2:', de2 print 's3:', de3 print 's4:', de4
原文出自:http://blog.csdn.net/daiyudong2020/article/details/62088583
End;
0 0
- python AES对称加密示例
- python AES 双向对称加密解密
- python AES 双向对称加密解密
- AES对称加密例子
- AES对称加密
- Java-对称加密-AES
- AES对称加密
- AES对称加密
- AES对称加密Util
- 理解AES对称加密
- AES加密对称算法
- 对称加密:AES
- 对称加密------AES
- 对称加密之AES加密
- 加密方式-对称加密(AES)
- javascript 实现AES对称加密
- Java 加密 AES 对称加密算法
- Java 加密 AES 对称加密算法
- Spark分类模型--来源Spark机器学习
- 数据库应用优化(2)
- CppPrimer--顶层const与底层const
- linux网络编程之用select函数实现io复用(基于TCP)引发的思考
- PyCharm 使用 tricks
- python AES对称加密示例
- 学习算法(3)——查找2个数组中的相同元素
- Codeforces Round #402 (Div. 2) A题
- Spark聚类模型K-Means----来源Spark机器学习
- python爬虫设置请求消息头(headers)
- CppPrimer--数组名与指针& 函数名与函数指针
- 95. Unique Binary Search Trees II
- Android-TextView及其子类(TextView、EditText、Button)
- 随记