我遇到存储加密字符串,然后在文本文件中编码b64的问题。在Python中检索存储的AES加密字符串时出现问题
代码加密是
from base64 import b64encode, b64decode # import library for B64
from Crypto.Cipher import AES
import datetime
d = datetime.date.today()
shortd = d.strftime("%y%m%d")
docNum = raw_input("Enter Doc Number: ")
#Doc num is always 20 characters,
obj = AES.new('ThisIsA16digitPs', AES.MODE_CBC, 'This is an IV456')
ciphertext = obj.encrypt(shortd+docNum+"000000") #Zeroes for filler
lognum = b64encode(ciphertext)
f = open("e:\log.txt", "a")
f.write(str(lognum) + "\n")
f.close()
的文件显示以下文字:
uTfZKAuVYbZJM28Tbcv3OBHvDn8QBKm1Nbb0wjcq9rE=
wCeIeyDBShmbsjM1yIpzEPdijAe4o12J4FAhigDotCU=
wCeIeyDBShmbsjM1yIpzEPHZ9fsBlE+svpzBxwcunoU=
wCeIeyDBShmbsjM1yIpzEODr4Ko91q0lsSnlMSuUlJo=
因为我有4个数字在那里。
代码解密是
from base64 import b64encode, b64decode # import library for B64
from Crypto.Cipher import AES # Import AES encryption module
obj2 = AES.new('ThisIsA16digitPs', AES.MODE_CBC, 'This is an IV456')
with open('e:\\log.txt', "r") as logfile:
for line in logfile:
docstring2 = obj2.decrypt(b64decode(line))
print docstring2
if not line:
logfile.close()
break
但是当我运行它,返回的结果是
15071110000000000000000001000000
t²W;\è¥dèä»Q.ó·0000000002000000
’?ÕC©û™±1ófì±#0000000003000000
”„¬¿Ì¼ïÂѾa*›ƒ0000000004000000
第一行是正确的。其他人应该喜欢它。
15071110000000000000000001000000
15071120000000000000000002000000
15071120000000000000000003000000
15071120000000000000000004000000
那么,我做错了什么?我是python的新手,无法弄清楚这一点。
编辑:我在Win32上的Python 2.7.10。
谢谢,这是它!这些行一次添加一个,作为另一个进程的一部分,但它们一次全部拉出(然后过滤)。 – PaulP