Python 多次加密解密
我正在尝试使用Python2.7进行加密。我能对文本加密解密一次。但当我在循环中多次尝试加密解密时,它不会返回变量p中的原始字符串。请看一下我的代码,并建议可以做什么。谢谢Python 多次加密解密,python,python-2.7,encryption,cryptography,pycrypto,Python,Python 2.7,Encryption,Cryptography,Pycrypto,我正在尝试使用Python2.7进行加密。我能对文本加密解密一次。但当我在循环中多次尝试加密解密时,它不会返回变量p中的原始字符串。请看一下我的代码,并建议可以做什么。谢谢 import os, random from Crypto.Cipher import AES from Crypto.Hash import SHA256 '''Encryption''' k = 'mykey' hasher = SHA256.new(k) k = hasher.digest() p = 'enig
import os, random
from Crypto.Cipher import AES
from Crypto.Hash import SHA256
'''Encryption'''
k = 'mykey'
hasher = SHA256.new(k)
k = hasher.digest()
p = 'enigmaticaura'
print p
IV = ''
lp = len(p)
for i in range(16):
IV += chr(random.randint(0,0xFF))
if len(p)%16 != 0:
p += ' '*(16 - len(p)%16)
enc = AES.new(k, AES.MODE_CBC, IV)
for i in range(2):
p = enc.encrypt(p)
print p
'''Decryption'''
dec = AES.new(k, AES.MODE_CBC, IV)
for i in range(2):
p = dec.decrypt(p)
#p = p[:lp]
print p
免责声明:Python并不是我的强项,但嘿,我已经有一段时间没有回答任何问题了,为什么不 我猜你的问题应该是“为什么解密不产生原始输入” 首先,为什么?使用相同的密钥并不能真正使加密变得更好 而对于两个人来说,这并不是为了这样工作。我很确定这是因为加密和解密对象是有状态的,不能重用。更详细地说 但是,两个小的改变将使它(某种程度上)工作,只要你能找回原始的源代码
for i in range(2):
enc = AES.new(k, AES.MODE_CBC, IV) ## move this line inside the loop
p = enc.encrypt(p)
print p
及
这可能是,也可能不是您所希望的。那么,结果有什么问题?您的问题描述没有帮助。你到底在期待什么?你到底得到了什么?问题是解密后我无法得到原始字符串p('Enigmaticura')。也相应地编辑了问题。请使用答案旁边的复选标记表示问题已解决。非常感谢!:)尽管如此,我不太清楚为什么它会起作用。enc/dec变量没有改变,因此为下一次迭代重新定义它们是没有意义的。我想使用.encrypt/.decrypt方法可能是原因。@harsh kolhatkar这就是问题所在-enc/dec变量在内部被修改。它们保持内部状态,不能重用。通过重新创建它们,实际上就是重置它们。
for i in range(2):
dec = AES.new(k, AES.MODE_CBC, IV) ## and this line too
p = dec.decrypt(p)