Как я могу установить соль для bcrypt.hashpw? - PullRequest
2 голосов
/ 15 января 2012
    salt = 'yhnqazolr123098765'
    password = bcrypt.hashpw(password,salt)
    repeatpassword = bcrypt.hashpw(repeatpassword,salt)

Я получил ошибку для второй строки.

ValueError at /register

Invalid salt

Request Method:     POST
Request URL:    http://127.0.0.1:8000/register
Django Version:     1.3.1
Exception Type:     ValueError
Exception Value:    

Invalid salt

Exception Location:     /home/user1/djangoblog/blog/views.py in register, line 70
Python Executable:  /usr/bin/python
Python Version:     2.6.6
Python Path:    

['/home/user1/djangoblog',
 '/usr/lib/python2.6',
 '/usr/lib/python2.6/plat-linux2',
 '/usr/lib/python2.6/lib-tk',
 '/usr/lib/python2.6/lib-old',
 '/usr/lib/python2.6/lib-dynload',
 '/usr/local/lib/python2.6/dist-packages',
 '/usr/lib/python2.6/dist-packages',
 '/usr/lib/python2.6/dist-packages/gst-0.10',
 '/usr/lib/pymodules/python2.6',
 '/usr/lib/pymodules/python2.6/gtk-2.0']

Что делать?Мне нужно каждый раз устанавливать значение соли по умолчанию, а не случайную соль.

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Формат для соли:

$Version$log2(NumRounds)$salt

где:

  • Version - это 2,
  • 0 <= log2(NumRounds) < 32
  • salt - это 22-байтовая строка в кодировке base-64.

Я предлагаю вам использовать bcrypt.gensalt() вместо. У вас нет веских причин давать свою соль.

2 голосов
/ 15 января 2012

Я думаю, что, как в примере, найденном на странице проекта , вам нужно что-то вроде этого:

salt = bcrypt.gensalt()
password = bcrypt.hashpw(password, salt)
repeatpassword = bcrypt.hashpw(repeatpassword,salt)
...