Вопрос

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

Это было полезно?

Решение

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

Bcrypt.net-это реализация кода Hashing Hashing Passhore Blowshd на основе Blowfish, описанного в «Схеме с адаптацией пароля в будущем» Нильса Провосом и Дэвидом Мазьером.Это прямой порт JBCRYPT Дэмиена Миллера, и, таким образом, выпускается по той же лицензии в стиле BSD.Код полностью управляется и должен работать с любой реализацией CLI Little-Endian-он был протестирован с помощью Microsoft .net и Mono.

Другие советы

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

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

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

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

Реализация Blowfish, лежащая в ее основе, является портом общедоступной реализации C Брюса Шнайера и успешно проходит все официальные тестовые векторы.

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

Библиотека также включает код PBKDF2, который работает для любого HMAC, в отличие от реализации .Net только с SHA-1 (добавлено сегодня - я собираюсь вскоре написать SCrypt на C#, и для этого требуется PBKDF2 с HMAC-SHA256).Если хотите, вы тоже можете составить себе схему на основе этого.

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

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


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

Вы пробовали это Функция MS BCryptCreateHash C++ возможно??Кажется, присутствует в Windows Server 2008 и Windows Vista.

Кроме того, вы, вероятно, можете проверить следующее MS C# BCryptNative.cs класс тоже возможно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top