Понимание PHP crypt() возвращаемое значение

Говорят, что функция PHP crypt имеет следующее возвращаемое значение:

"Returns the hashed string or a string that is shorter than 13 characters and is 
guaranteed to differ from the salt on failure."

Я не понимаю, что это значит... Я в основном понял, как работает эта функция, но я хотел бы знать, как интерпретировать возвращаемое значение и пытаться понять, КОГДА это условие возникает... это, безусловно, один из самых смутных объяснения в руководстве по PHP или, может быть, я просто слеп на то, чтобы сниматься в нем слишком долго...?:)

1 ответ

Решение

В документации склепа упоминается одна вещь:

(5.3.2) Исправлено поведение Blowfish в недопустимых раундах, чтобы возвращать строку "fail" ("*0" или "*1") вместо возврата к DES.

По-видимому crypt может возвращать разные [плохо определенные] короткие строки при неудаче. Я подозреваю, что "или" должен объяснить "отличается от соли".

Таким образом, строка "короче 13 символов" (кто что знает) -> ошибка. Единственный документированный случай касается недопустимых опций Blowfish, но может быть расширен в будущем. (Хотя ошибка отсутствует в документации, ошибка № 64449 указывает на то, что для алгоритмов должен возвращаться "сбой" всякий раз, когда соль недействительна.)


То, что соль никогда не возвращается, может быть связано с ошибкой # 55439:

Если crypt() выполняется с солями MD5, возвращаемое значение состоит только из соли.

Следствием является $valid = crypt($pw, $crypt); TRUE для любого $pw.

Таким образом, гарантируя, что сама соль не будет возвращена, она избегает цикла обратной связи, где сохраненные хэши - только соль из-за ошибки - всегда будут регистрироваться как действительные для любого пароля. Ограничение, что соль не возвращается, может смягчить вырожденные взаимодействия различных (исправленных и незапатченных?) Серверов.


Кроме того, кто-нибудь знает, как найти точечную документацию для конкретных версий PHP? Было бы интересно увидеть, когда было добавлено предложение "отличается от соли".

Другие вопросы по тегам