php crypt () длина соли Blowfish обратно совместима

Я использовал crypt () для хеширования пароля, с солью blowfish, как это:

$ 2a $, 2 цифры, $ 21 символ в [a-zA-Z0-9]

Здесь я допустил ошибку, что длина символа после третьего $ равна 21, а не 22. Но он работал нормально, поэтому я не нашел ошибку.

Он работает на моем рабочем столе, который работает под управлением Windows и php 5.4.4, и на AWS ec2, который работает под управлением Amazon Linux с php 5.3.x, но это слишком мало.

Однажды я обновил AWS php до 5.5.14. тогда возникла проблема. crypt () возвращает * 0 все время.

После некоторой попытки я добавил $ в конце соли так, чтобы это стало 22 символами. И он снова работает и возвращает ту же строку хеша, что и раньше. Хотя он не подчиняется правилу blowfish, символы должны быть [./a-zA-Z0-9]

Но теперь я дублирую этот сайт на другую машину, на которой работает openSuSE 13.1 с php 5.5.14. Эта соль снова не удалась.

Я понижаю php до 5.4.20, но не помогаю.

Новому сайту все еще нужна старая база данных, поэтому я должен сделать так, чтобы хэш пароля работал.

Что такое библиотека или модуль, которые влияют на эту проблему совместимости с ошибками длины соли? Tt, кажется, не версия PHP. AWS 5.5.14

Или еще один волшебный чарс может спасти меня снова? Я попытался заменить th tail $ на каждый в [./a-zA-Z0-9], но не повезло, хеш-строка отличается ....

Ответы на вопрос(2)

Ваш ответ на вопрос