【问题标题】:Python sha256 hash padding issuePython sha256 哈希填充问题
【发布时间】: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 是换行符特殊字符。如果您想将信息放在单独的行中,则需要它。如果您不想要它,数据将不会在不同的行中。

标签: python sha256


【解决方案1】:

您可以在使用rstrip 读取一行后删除换行符。

line = "123\n"
line = line.rstrip('\n')

【讨论】:

  • 嘿,这解决了我的问题。我以前尝试以不同的方式剥离它,但没有成功。谢谢。
猜你喜欢
  • 2017-01-08
  • 2016-12-01
  • 2010-11-22
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
  • 2018-01-06
相关资源
最近更新 更多