Вопрос

Мне было интересно, существует ли python, родственный PHP crypt() функция, которая работает аналогичным образом, генерируя случайную соль и встраивая ее в сохраненную строку.

У меня есть таблица хэшированных паролей, которые были созданы с помощью $5$ строковый ключ для настройки соленой криптограммы на основе SHA256.У этих хэшей была некоторая дополнительная записанная энтропия, присоединенная к обоим концам с фиксированным интервалом, но разделение этих символов из строки и получение основного хэша тривиально и вообще не является проблемой.

Я просмотрел документацию по python и не могу найти никаких методов в hashlib которые, похоже, используют тот же синтаксис, что и в php crypt().Является ли подход, используемый в PHP (формат ввода, разделенный знаками доллара между salt, algo и rounds), уникальным для данного языка?

Спасибо.

Редактировать:

Это выглядит так, как будто пересмотренная версия собственного родного языка python crypt функция будет использовать процедуры, аналогичные процедурам PHP.Из предрелизной документации 3.3:

http://docs.python.org/dev/library/crypt.html

Редактировать:

Наконец-то нашел Passlib, библиотеку, которая предоставляет эту функциональность на чистом python.

http://packages.python.org/passlib/index.html

Это было полезно?

Решение

Это, безусловно, выглядит очень похоже на Криптография FreeBSD (смотрите "модульный склеп" на странице руководства).Я действительно не помню, работает ли это так же в Linux или другом, но это, похоже, указывает на то, что это не уникально.

Насколько я знаю, в Python нет прямого эквивалента, но создать свой собственный не должно быть слишком сложно, поскольку сами алгоритмы шифрования должны поддерживаться в hashlib.

Другие советы

Я понимаю, что этот вопрос старый, однако я нашел его, когда пытался реализовать алгоритм входа в систему на Python, который изначально был написан на PHP.Функция crypt в PHP использует любой из нескольких небезопасных алгоритмов DES, включая bcrypt.Это зависит от того, чем вы хэшируете свою строку.Passlib - это в значительной степени ваш лучший выбор для репликации функциональности, которую ваше приложение в данный момент получает от PHP crypt.Возьмите один из ваших хэшированных паролей и посмотрите на начало строки.Вы должны увидеть что-то вроде $ 2a$, $3$, $6$ ( или что-то подобное).Обратите внимание, что если эта строка не существует, вы, скорее всего, используете стандартное хеширование DES.

Перейдите по этой ссылке:

http://pythonhosted.org/passlib/modular_crypt_format.html#mcf-identifiers

Затем сопоставьте его с алгоритмом, который вам нужно реализовать на Python.Идентификаторы схемы являются ссылками на документацию passlib, касающуюся этого алгоритма хеширования.На этом этапе у вас должна быть вся информация, необходимая для завершения повторной реализации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top