python encrypt 实现AES加密的实例详解
AES加密方式有五种:ECB,CBC,CTR,CFB,OFB
从安全性角度推荐cbc算法
windows下安装:pipinstallpycryptodome
linux下安装:pipinstallpycrypto
cbc加密需要一个十六位的key和一个十六位的iv(偏移量)
ecb加密不需要iv
aescbc加密的python实现
fromCrypto.CipherimportAES frombinasciiimportb2a_hex,a2b_hex #如果text不足十六位的倍数用空格补充 defadd_to_16(text): iflen(text.encode('utf8'))%16: add=16-(len(text.encode('utf8'))%16) else: add=0 text=text+'\0'*add returntext #加密 defencrypt(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进制字符串 returnb2a_hex(cipher_text) #解密后去掉空格 defdecrypt(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)) returnbytes.decode(plain_text).rstrip('\0') if__name__=='__main__': a=encrypt('hello') b=decrypt(a) print('加密',a) print('解密',b)
aesecb加密,没有偏移量iv
fromCrypto.CipherimportAES frombinasciiimportb2a_hex,a2b_hex #如果text不足十六位的倍数用空格补充 defadd_to_16(text): iflen(text.encode('utf8'))%16: add=16-(len(text.encode('utf8'))%16) else: add=0 text=text+'\0'*add returntext #加密 defencrypt(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进制字符串 returnb2a_hex(cipher_text) #解密后去掉空格 defdecrypt(text): key='9999999999999999'.encode('utf8') mode=AES.MODE_ECB cryptos=AES.new(key,mode) plain_text=cryptos.decrypt(a2b_hex(text)) returnbytes.decode(plain_text).rstrip('\0') if__name__=='__main__': a=encrypt('hello') b=decrypt(a) print('加密',a) print('解密',b)
到此这篇关于pythonencrypt实现AES加密的实例详解的文章就介绍到这了,更多相关pythonencrypt实现AES加密内容请搜素毛票票以前的文章或下面相关文章,希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。