.net реализация bcrypt

Кто-нибудь знает о хорошей реализации bcrypt, я знаю, что этот вопрос задан раньше, но он получил очень мало ответа. Я немного не уверен в том, что вы выбрали реализацию, которая появляется в google, и я думаю, что мне может быть лучше использовать sha256 в пространстве имен System.Security.Cryptography, по крайней мере, я знаю, что это поддерживается! Что вы думаете?

Ответы

Ответ 1

Похоже, вы ищете BCrypt.net:

BCrypt.net - это реализация Пароль на основе OpenBSD Blowfish хеширующий код, описанный в "A Будущая адаптивная схема паролей" Нильс Провос и Дэвид Мазьер. это прямой порт jBCrypt от Damien Миллер, и, таким образом, выпущен под такая же лицензия BSD-стиля. Код полностью управляться и работать с любыми реализация CLI малоэтажной - это был протестирован с помощью Microsoft.NET и Моно.

Ответ 2

Вы можете найти обновленную реализацию BCrypt для .Net здесь: http://bcrypt.codeplex.com/

Ответ 3

В настоящее время BCrypt.Net представляет собой самую популярную библиотеку

http://bcrypt.codeplex.com/

Вот пример использования пароля для хеширования:

[TestMethod]
    public void BCryptTest()
    {
        const string password = "PASSWORD";
        const int workFactor = 13;

        var start = DateTime.UtcNow;
        var hashed = BCrypt.Net.BCrypt.HashPassword(password, workFactor);
        var end = DateTime.UtcNow;

        Console.WriteLine("hash length is {0} chars", hashed.Length);
        Console.WriteLine("Processing time is {0} with workFactor {1}", end - start, workFactor);
        Console.WriteLine("Hashed password: {0} ", hashed);
        Console.WriteLine("correct password {0}", BCrypt.Net.BCrypt.Verify("PASSWORD", hashed));
        Console.WriteLine("incorrect password {0}", BCrypt.Net.BCrypt.Verify("PASSWORd", hashed));
    }

Пример вывода:

hash length is 60 chars
Processing time is 00:00:01.0020000 with workFactor 13
Hashed password: $2a$13$iBqdG7ENBABEargiyzGlTexPsmviF/qrFxUZB2zce7HKF6MoBNhEq 
correct password True
incorrect password False

Ответ 4

Мне понадобилась реализация BCrypt при перемещении чего-то из PostgreSQL (который имеет pg_crypto) в SQLite (а это не так), поэтому я написал свой собственный. Увидев это сообщение, я не единственный, кому это нужно, я решил похлопать по нему лицензию и отпустить ее. URL-адрес:

http://zer7.com/software.php?page=cryptsharp

Реализация Blowfish позади него представляет собой порт реализации C-домена общего пользования Bruce Schneier и успешно выполняется на всех официальных тестовых векторах.

Код BCrypt я написал сам, основываясь на спецификации. Я также создал PHP script, который генерирует случайные пароли длиной от 0 до 100 и соли, склеивает их и выводит их в тестовый файл. Код С# соответствует этим 100% времени. Вы можете использовать script и проверить это самостоятельно.

В библиотеке также содержится код PBKDF2, который работает для любого HMAC, а не только .Net SHA-1-only (добавлено сегодня - я собираюсь сделать SCrypt на С# в ближайшее время, и для этого требуется PBKDF2 с HMAC-SHA256). Вы также можете составить схему, основанную на этом, если хотите.

Ответ 5

Неправильный ответ, см. Ниже

Все постфиксные алгоритмы "Cng" (Cryptography Next Generation) в .Net Framework теперь используют bcrypt. Например, SHA256Cng.


На самом деле MS BCrypt (BestCrypt) не ссылается на тот, что основан на шифре Blowfish - спасибо, RobbyD, за комментарий.
Не удалят ответ, на тот случай, если кто-то еще сделает такую же путаницу.