Domanda

Qualcuno conosce una buona implementazione di bcrypt, so che questa domanda è stata posta in precedenza ma ha ricevuto pochissima risposta.Sono un po' insicuro se scegliere semplicemente un'implementazione che appare su Google e penso che potrebbe essere meglio usare sha256 nello spazio dei nomi System.Security.Cryptography, almeno allora so che è supportato!Quali sono i tuoi pensieri?

È stato utile?

Soluzione

Sembra che siete alla ricerca di BCrypt.net :

  

BCrypt.net è un'implementazione del   la password Blowfish a base di OpenBSD   codice hashing, descritto in "A   Future-adattabile schema di password" di   Niels Provos e David Mazières. È   una porta diretta di jBCrypt di Damien   Miller, ed è quindi rilasciato sotto   stessa licenza BSD-style. Il codice è   completamente gestito e dovrebbe funzionare con qualsiasi   implementazione CLI little-endian - è   è stato testato con Microsoft .NET   e Mono.

Altri suggerimenti

È possibile trovare un'implementazione aggiornata di bcrypt per .Net qui: http://bcrypt.codeplex.com/

BCrypt.Net sembra essere una libreria più famosa in questo momento

http://bcrypt.codeplex.com/

Ecco un esempio di come usarlo per hashing la password:

[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));
    }

Esempio di output:

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

Avevo bisogno di un'implementazione BCrypt quando spostavo qualcosa da PostgreSQL (che ha pg_crypto) a SQLite (che non lo ha), quindi ho scritto il mio.Vedendo da questo messaggio che non sono l'unico ad averne bisogno, ho deciso di dargli una licenza e rilasciarlo.L'URL è:

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

L'implementazione Blowfish dietro di esso è un port dell'implementazione C di dominio pubblico di Bruce Schneier e ha successo su tutti i vettori di test ufficiali.

Il codice BCrypt che ho scritto io stesso in base alle specifiche.Ho anche creato uno script PHP che genera password casuali di lunghezza compresa tra 0 e 100 e le sala, le crittografa e le restituisce in un file di prova.Finora il codice C# corrisponde a questi il ​​100% delle volte.Puoi utilizzare lo script e testarlo tu stesso.

La libreria include anche il codice PBKDF2 che funziona con qualsiasi HMAC anziché con l'implementazione solo SHA-1 di .Net (aggiunto oggi: ho intenzione di eseguire presto SCrypt in C# e ciò richiede PBKDF2 con HMAC-SHA256).Se lo desideri, potresti creare uno schema basato anche su questo.

Risposta sbagliata, si prega di vedere sotto

Tutti gli algoritmi "Metano" (Cryptography Next Generation) postfissati in .Net Framework ora utilizzare bcrypt. Per esempio. SHA256Cng .


In realtà la MS bcrypt (BestCrypt) non si riferisce a quella basata sulla cifratura Blowfish -. Grazie, RobbyD, per il commento
non elimina la risposta, nel caso in cui nessun altro fa la stessa confusione.

Hai provato questo MS BCryptCreateHash C ++ funzione forse ?? Sembra essere presente da Windows Server 2008 e Windows Vista.

Inoltre, probabilmente si può verificare quanto segue MS C # BCryptNative cs classe troppo forse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top