Подтвердить что ты не робот

Что использовать для хэширования паролей? Любая причина не использовать jBCrypt?

Я планирую использовать jBCrypt для хеширования паролей в новом веб-приложении, поскольку он должен быть лучшим из того, что Я прочел. Поскольку я не использовал его, прежде чем я заглядываю, если есть причина не использовать его.

У меня есть это:

  • Я не нашел его в репозитории Maven (искал jbcrypt и bcrypt на mvnrepository.org), что является недостатком, поскольку я хотел бы, чтобы мои зависимости управлялись с использованием репозитория Maven, если это возможно. Если jBCrypt - лучшее решение для хеширования паролей, я должен был бы настроить собственный локальный репозиторий и иметь его таким образом. Или я просто пропустил это? Может быть, он где-то там?
  • Это только в версии 0.2, но, может быть, она стабильная в любом случае, и причина для номера с низкой версией имеет некоторые другие причины?
4b9b3361

Ответ 1

jBcrypt, вероятно, прекрасен как криптоалгоритм для ваших паролей; blowfish относительно силен. Хотя некоторые ошибки реализации в Blowfish были обнаружены, я не нашел ничего о jBcrypt. С другой стороны, Blowfish не тестировался почти так же сильно, как и другие алгоритмы, а crack -style known-plaintxt attack часто работает лучше чем ожидалось, удивительные крипто-выродки.

Итак, вот что я предлагаю:

  • и используйте jBcrypt, но защищайте ваши файлы с зашифрованными паролями в той степени, в которой вы разумно можете - как вы использовали /etc/shadow в системе UNIX.
  • В отличие от предложения Nikhil, я бы потянул источники в ваш контроль версий по двум причинам: (1) где бы вы их сохранили, поскольку они вам нужны, когда вы строите, и (2), потому что всегда есть вероятность, что человек, делающий jBcrypt, перейдет к другим вещам, и вы не хотите, чтобы вы оставались болтающимися перед доставкой (что неизбежно, когда вы это узнаете). В такой ситуации я поставил источники в ваш контроль версий, как если бы они были вашим кодом, а затем любые изменения могут быть вставлены так, как если бы вы построили новую версию самостоятельно. Не нужно быть более сложным, чем обычно.

Ответ 2

Насколько вы обеспокоены тем, что он не созрел, я собирался предположить, что вы настроили свои собственные тесты JUnit, сравнивая результаты jBcrypt и более проверенного Bcrypt, чтобы увидеть, получаете ли вы те же результаты, а затем вносите те в проект jBcrypt.

Но это уже сделано:

... поставляется с комплектом JUnit unit тесты для проверки правильности работы библиотеки и совместимость с канонической реализации bcrypt.

Просматривая тесты JUnit, чтобы увидеть, соответствуют ли они вашему уровню удовлетворенности, я бы начал...

Ответ 3

Я сомневаюсь, что стабильность будет проблемой, поскольку сам bcrypt является зрелым, а его крошечные стандартизированные обертки не делают ничего экстраординарного. Я доволен другой оболочкой bcrypt от Damien Miller, python-bcrypt, которая находится только на версии 0.1.

Я незнакома с Maven, но (ересь!). Я сомневаюсь, что вам нужен контроль версий для такого простого элемента, как bcrypt. Чтобы процитировать сайт, изменения с v0.1 до v0.2 были "правильностью, опечатками и твитами API (полностью обратно совместимыми)", а список TODO пуст.