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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。