.net реализация bcrypt
-
22-08-2019 - |
Вопрос
Кто-нибудь знает о хорошей реализации 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 кажется самой популярной библиотекой на данный момент.
Вот пример того, как использовать его для хеширования пароля:
[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 класс тоже возможно.