.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, за комментарий.
Не удалят ответ, на тот случай, если кто-то еще сделает такую же путаницу.
Ответ 6
Вы пробовали эту функцию MS BCryptCreateHash С++, возможно? Кажется, присутствуют в Windows Server 2008 и Windows Vista.
Кроме того, возможно, вы можете, вероятно, проверить следующий класс MS С# BCryptNative.cs.