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], но не повезло, хеш-строка отличается ....