我对sha256哈希的填充有问题。
#!/usr/bin/env python
import sys
import os
import hashlib
from passlib.hash import pbkdf2_sha256
code = str(sys.argv[1])
print(code)
array = [["",""],["",""],["",""],["",""],["",""],["",""],["",""],["",""]]
counter = 0
iteration = 1
file = open("hashes.txt", "r")
for i in file:
if iteration == 1:
array[counter][0] = str(i)
iteration = 2
else:
array[counter][1] = str(i)
iteration = 1
if iteration == 1:
counter = counter +1;
print(array)
print([array[0][0]])
print pbkdf2_sha256.verify(code,array[0][0])
上面的链接中的脚本由.php文件调用,并传递参数“代码”。然后,从文本文件中读取带有相应用户名的哈希列表,并将其存储在列表中。
带有仅包含一个哈希和名称的文本文件的脚本输出如下所示:
2244 [['$ pbkdf2-sha256 $ 200000 $ AuCcU0pJidHam1NKyXnPmQ $ TmzQ.cWXKnx7u.dd023qoltVxeuaPafEq7Lvyywxf9o \ n','Fabian'],['',``],[ '],['',“],[”,“],[”,“],[”,“]]] ['$ pbkdf2-sha256 $ 200000 $ AuCcU0pJidHam1NKyXnPmQ $ TmzQ.cWXKnx7u.dd023qoltVxeuaPafEq7Lvy \ n']
如您所见,这很好用,但是在打印时两次都将'\ n'附加到哈希中。我想这就是为什么最后一次打印会抛出“ TypeError:不正确的填充”的原因。
问题是:我不知道如何进行这项工作,因为如果删除“ \ n”,则名称和哈希将写在同一行中。我尝试使用
手动和脚本编写文本文件中的行file = open("hashes.txt","w")
file.write(hash)
file.write("Fabian")
但这不能解决问题。注意:文本文件如下所示:
hash0
name0
hash1
name1
etc
你们中有人遇到过这种情况吗?非常感谢您的任何帮助或想法,谢谢!!