Python sha256 проблема с заполнением хеша - PullRequest
0 голосов
/ 26 августа 2018

У меня проблема с заполнением хэша 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.dd023qoltWx7va \ п ']

Как вы можете видеть, это работает отлично, но '\ n' добавляется к хешу оба раза, когда он печатается. Я полагаю, что это причина того, что в самой последней печати выдается «Ошибка ввода: Неверное заполнение».

Проблема в том, что я не знаю, как заставить это работать, поскольку и имя, и хеш будут записаны в одной строке, если я удалю '\ n'. Я попытался написать строки в текстовом файле как вручную, так и с помощью скрипта, используя

file = open("hashes.txt","w")
file.write(hash)
file.write("Fabian")

но это не решает проблему. Примечание: текстовый файл выглядит так:

hash0
name0
hash1
name1
etc

Кто-нибудь из вас был в такой ситуации? Любая помощь или идея очень ценится, спасибо заранее!

1 Ответ

0 голосов
/ 26 августа 2018

Вы можете удалить escape-символ новой строки после прочтения строки, используя rstrip .

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