Предпочтительная реализация BCrypt.Net - PullRequest
8 голосов
/ 09 апреля 2011

Существует несколько различных портов BCrypt.net, и очень трудно сказать, какой из них «лучший».

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

Вот список реализаций BCrypt.Net, которые мне удалось отследить:

Дерек Слагер

Насколько я могу судить, это первый порт, который некоторое время не обновлялся. Версия 0.1

Google Code

Пользователь разместил копию Дерека Слагера в коде Google и сделал некоторые улучшения. Версия 0.3

NuGet

Единственная версия NuGet для Visual Studio, это скомпилированная копия без источника, поэтому я точно не могу ничего о ней знать. Похоже, что он поддерживает новую функцию, доступную только в редакции Google Code версии 0.3. В нем нет сайта поддержки, и я не могу сказать, является ли он открытым исходным кодом и не имеет какой-либо атрибуции (немного схематично). Версия 1.0, 213 скачиваний.

Код Plex

Кажется, это совершенно независимый порт, не имеющий отношения к порту Дерека Слагера. Похоже, есть некоторые полурегулярные обновления. Версия R5, 140 скачиваний.

Этот список завершен? Есть ли какая-то причина, чтобы выбирать одно над другим?

Ответы [ 3 ]

4 голосов
/ 15 февраля 2013

Первоначально они были проверены в феврале 2013 года, дополнены информацией из комментариев Джастина и Коултона и отражают мое текущее использование.

Более свежие из них, по-видимому, безопасны или, по крайней мере, "не известныошибки».(Есть и другие недостатки в bcrypt, но они скорее алгоритмические, чем связанные с кодом. Я предполагаю, что если вы используете bcrypt, вы уже знаете об этом.)

Все библиотеки, перечисленные в вопросе, всеоснованный на коде jBCrypt (за исключением, может быть, CryptSharp, понятия не имею), который получил исправления ошибок в феврале 2010 года для исправления рекомендации по безопасности "слабой энтропии".(http://www.mindrot.org/files/jBCrypt/internat.adv)

Разбивка:

  • Порт Codeplex BCrypt был запущен в конце 2010 года (проверка в декабре) и обновлен до более поздних источников в 2013 году.безусловно, безопасный и доступный на NuGet (https://www.nuget.org/packages/BCrypt-Official/).
  • CryptSharp (http://www.zer7.com/software/cryptsharp) - это живой, поддерживаемый проект, который выглядит очень хорошо выполненным, но я не оценил его подробно. Определенно стоит проверить. Также доступен на NuGet (http://www.nuget.org/packages/CryptSharpOfficial/).
  • Журнал изменений в коде Google указывает, что он включает исправления ошибок jBCrypt от февраля 2010 г. Но он довольно древний и мертвый.
  • У порта 2007 Дерека Слагера, вероятно, ** нет **эти исправления, я думаю, вам следует избегать этого.

Грубая временная шкала, основанная на журналах изменений контроля версий:

  1. Дерек Слагер сделал порт jBCrypt в 2007
  2. Это было импортировано в Google Code и несколько обновлено в октябре 2010 года.
  3. Код Codeplex Райана Д. Эмерла начался с более поздней версии jBCrypt в качестве источника (конец 2010).Этот импорт датируется * после * последнего изменения версии Google Code.Это обновление было обновлено до последнего источника в ноябре 2013 года.
  4. CryptSharp был первоначально выпущен в ноябре 2010 года, с регулярными выпусками до настоящего времени (декабрь 2014 года).Написано с нуля ??

В настоящее время я использую версию Codeplex, которая, как представляется, поддерживается, и появляется в начале результатов поиска Google.

В 2011 годуcrypt_blowfish ошибка: (j) BCrypt.net является автономной реализацией алгоритма и не зависит от библиотеки crypt_blowfish unix.Так что это не должно быть затронуто вообще.Впрочем, переписывать для поддержки формата $ 2y $ уже давно.

2 голосов
/ 04 октября 2012

К сожалению, по состоянию на 4 октября 2012 года я бы сказал, что ни один из перечисленных алгоритмов не является достаточным.Согласно этой статье (http://en.wikipedia.org/wiki/Crypt_(Unix)), в 2011 году в алгоритме была обнаружена ошибка. Правильный хеш bcrypt должен начинаться с $ 2y $ вместо $ 2a $. Я все еще ищу алгоритм самостоятельно.

1 голос
/ 11 апреля 2011

Если честно, я использовал два из трех, которые вы перечислили, и не нашел никакой разницы, кроме названий методов. Кажется, они делают то же самое.

Я предпочел использовать пакет NuGet, потому что его было проще интегрировать с существующими проектами. Я даже написал небольшую статью о том, как этого добиться с помощью менеджера пакетов NuGet.

http://sergiotapia.com/2011/03/using-bcrypt-in-a-net-application-why-its-better-than-sha-or-md5/

...