AES加密方式有五种 : ECB, CBC, CTR, CFB, OFB
从安全性角度推荐cbc算法
windows 下安装 : pip install pycryptodome
linux 下安装 : pip install pycrypto
cbc加密需要一个十六位的key 和一个十六位的iv(偏移量)
ecb加密不需要iv
aes cbc 加密的python实现
from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex # 如果text不足十六位的倍数用空格补充 def add_to_16(text): if len(text.encode('utf8')) % 16: add = 16 - (len(text.encode('utf8')) % 16) else: add = 0 text = text + '\0' * add return text # 加密 def encrypt(text): key = '9999999999999999'.encode('utf8') mode = AES.MODE_CBC iv = b'qqqqqqqqqqqqqqqq' text = add_to_16(text) cryptos = AES.new(key, mode, iv) cipher_text = cryptos.encrypt(text) # 因为AES加密后的字符串不一定是ascii字符集的,输出保存可能存在问题,所以这里转为16进制字符串 return b2a_hex(cipher_text) # 解密后去掉空格 def decrypt(text): key = '9999999999999999'.encode('utf8') mode = AES.MODE_CBC iv = b'qqqqqqqqqqqqqqqq' cryptos = AES.new(key, mode, iv) plain_text = cryptos.decrypt(a2b_hex(text)) return bytes.decode(plain_text).rstrip('\0') if __name__ == '__main__': a = encrypt('hello') b = decrypt(a) print('加密', a) print('解密', b)
aes ecb加密, 没有偏移量iv
from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex # 如果text不足十六位的倍数用空格补充 def add_to_16(text): if len(text.encode('utf8')) % 16: add = 16 - (len(text.encode('utf8')) % 16) else: add = 0 text = text + '\0' * add return text # 加密 def encrypt(text): key = '9999999999999999'.encode('utf8') mode = AES.MODE_ECB text = add_to_16(text) cryptos = AES.new(key, mode) cipher_text = cryptos.encrypt(text) # 因为AES加密后的字符串不一定是ascii字符集的,输出保存可能存在问题,所以这里转为16进制字符串 return b2a_hex(cipher_text) # 解密后去掉空格 def decrypt(text): key = '9999999999999999'.encode('utf8') mode = AES.MODE_ECB cryptos = AES.new(key, mode) plain_text = cryptos.decrypt(a2b_hex(text)) return bytes.decode(plain_text).rstrip('\0') if __name__ == '__main__': a = encrypt('hello') b = decrypt(a) print('加密', a) print('解密', b)
到此这篇关于python encrypt 实现AES加密的实例详解的文章就介绍到这了,更多相关python encrypt 实现AES加密内容请搜素小牛知识库以前的文章或下面相关文章,希望大家以后多多支持小牛知识库!
本文向大家介绍Java使用AES加密和解密的实例详解,包括了Java使用AES加密和解密的实例详解的使用技巧和注意事项,需要的朋友参考一下 Java使用AES加密和解密的实例详解 前言: AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮分析、测试和征集,共产生了15个候选算法。1
本文向大家介绍java实现的AES加密算法完整实例,包括了java实现的AES加密算法完整实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java实现的AES加密算法。分享给大家供大家参考,具体如下: PS:关于加密解密感兴趣的朋友还可以参考本站在线工具: 密码安全性在线检测: http://tools.jb51.net/password/my_password_safe 高强度密码生
本文向大家介绍PHP实现的AES 128位加密算法示例,包括了PHP实现的AES 128位加密算法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现的AES 128位加密算法。分享给大家供大家参考,具体如下: PS:关于加密解密感兴趣的朋友还可以参考本站在线工具: 文字在线加密解密工具(包含AES、DES、RC4等): http://tools.jb51.net/passwor
本文向大家介绍C#实现数据包加密与解密实例详解,包括了C#实现数据包加密与解密实例详解的使用技巧和注意事项,需要的朋友参考一下 在很多项目中,为了安全安全考虑,需要对数据包进行加密处理,本文实例所述的即为C#加密代码,在应用开发中有很大的实用价值。说起数据包加密,其实对C#编程者来说,应该是一个基础的技巧,是进行C#程序设计人员必须要掌握的技能。 C#实现加密功能的核心代码如下: 本例备有详细的注
本文向大家介绍详解Java利用实现对称加密(DES、3DES、AES),包括了详解Java利用实现对称加密(DES、3DES、AES)的使用技巧和注意事项,需要的朋友参考一下 有两句话是这么说的: 1)算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。 2)编程就是算法和数据结构,算法和数据结构是编程的灵魂。 注意,这可不是我说的,是无数程序员总结的,话说的很实在
本文向大家介绍Java AES加密解密的简单实现方法,包括了Java AES加密解密的简单实现方法的使用技巧和注意事项,需要的朋友参考一下 废话不多说,直接上代码 以上这篇Java AES加密解密的简单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。