【发布时间】:2018-08-26 10:27:00
【问题描述】:
我对 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 文件调用,并传递参数“code”。然后从文本文件中读取具有相应用户名的哈希列表并存储到列表中。
文本文件仅包含一个哈希和名称的脚本输出如下所示:
2244 [['$pbkdf2-sha256$200000$AuCcU0pJidHam1NKyXnPmQ$TmzQ.cWXKnx7u.dd023qoltVxeuaPafEq7Lvyywxf9o\n', 'Fabian'], ['', ''], ['', ''], ['', ' '], ['', ''], ['', ''], ['', ''], ['', '']] ['$pbkdf2-sha256$200000$AuCcU0pJidHam1NKyXnPmQ$TmzQ.cWXKnx7u.dd023qoltVxeuaPafEq7Lvyywxf9o \n']
正如您所看到的,这非常有效,但是在打印的时候,哈希都会附加一个 '\n'。我想这就是最后一次打印抛出“TypeError: Incorrect padding”的原因。
问题是:我不知道如何进行这项工作,因为如果我删除 '\n',名称和哈希都会写在同一行中。我尝试手动和使用脚本在文本文件中编写这些行
file = open("hashes.txt","w")
file.write(hash)
file.write("Fabian")
但这并不能解决问题。注意:文本文件如下所示:
hash0
name0
hash1
name1
etc
你们中有人遇到过这种情况吗?非常感谢任何帮助或想法,在此先感谢!
【问题讨论】:
-
\n是换行符特殊字符。如果您想将信息放在单独的行中,则需要它。如果您不想要它,数据将不会在不同的行中。