Как я могу переписать хэш пароля, написанный на Lua с Python? - PullRequest
0 голосов
/ 11 апреля 2019

Мне нужно переписать хеш пароля, чтобы мое приложение Django могло работать с устаревшей базой данных (старый хеш написан на Lua).Я сделал почти точно такой же код, но он возвращает другой хеш.

Это мой код:

def encode(password, salt):

    first_pass = hashlib.sha512()
    salted = (password + salt).encode('utf-8')

    first_pass.update(salted)

    digest = first_pass.digest()

    for i in range(1, 5000):
        next_pass = hashlib.sha512()
        next_pass.update(digest + salted)
        digest = next_pass.digest()

    hash = base64.b64encode(digest).decode('utf-8').strip()
    return hash

Это код в Lua:

function M.password_to_hash(plain_password, salt)

    local resty_sha512 = require("resty.sha512")

    local salted = plain_password.."{"..salt.."}"
    local first_pass = resty_sha512:new()

    first_pass:update(salted)

    local digest = first_pass:final()

    for i = 1, 4999 do
        local next_pass = resty_sha512:new()
        next_pass:update(digest..salted)
        digest = next_pass:final()
    end

    return ngx.encode_base64(digest)
end

Мне нужны эти фрагменты для возврата одинаковых хэшей.

Пример:

password = testdevel

salt = 9675zt3fmtc0kg0c08k4c8wosc0ss8s

Функция Python возвращает:

6UbnltvNR6Y+wnUe2pd7RW/XglSB0SczKr7bUFCmv5l58eXuV2j3b9aSsD4DBeG44M6eJhStYE1sQIa95XbzlQ==

Функция Lua возвращает:

d5/dFCOfKDppXs5EYe3fGL+TF/0QN9myHTqXn0Ml8Xp7+bUOOTp2xuHjjm91mQNCxMJHiWleZtGRU86OqR5s9g==

1 Ответ

1 голос
/ 11 апреля 2019

salted в питоне должно быть:

salted = (password + '{' + salt + '}').encode('utf-8')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...