web-dev-qa-db-fra.com

Implémentation .NET de scrypt

J'ai lu scrypt et certains de ses avantages par rapport à l'algorithme de hachage bcrypt dans certaines circonstances.

De toute façon, il semble que scrypt ne soit pas encore aussi largement utilisé. Quelqu'un a-t-il déjà vu une implémentation .NET de celui-ci (favorisée en C #)?

56
Martin Buberl

Enfin, j'ai trouvé une implémentation de scrypt en C # dans la bibliothèque CryptSharp .
La bibliothèque est open source et utilise la licence ISC .

Historique des versions

1.2.0 23 janvier 2011:
Le SCrypt KDF est désormais pris en charge en tant que CryptSharp.Utility.SCrypt.
Ajout de Salsa20 de djb, requis par SCrypt.

53
Martin Buberl

Il y a une nouvelle implémentation de SCrypt pour .NET ici: https://github.com/replicon/Replicon.Cryptography.SCrypt

Contrairement à CryptoSharp, qui est une excellente bibliothèque, celle-ci est implémentée en tant que wrapper emballé autour d'une bibliothèque native. Cela lui permet d'utiliser des instructions de niveau natif (comme SSE2) pour améliorer sensiblement les performances de l'implémentation.

L'inconvénient est qu'il doit contenir des assemblys natifs compilés, détecter le bon à utiliser, le décompresser, puis le charger. Cela signifie qu'il n'est pas idéal pour tous les environnements, mais il fonctionne très bien là où il fonctionne.

20
mfenniak

Dans le cas où, comme moi, vous êtes venu à cette question via un rapide google (présenté comme le lien supérieur), vous pouvez maintenant télécharger SCrypt en tant que package Nuget dans votre projet.

PM> Install-Package Scrypt.NET

Utilisez comme suit:

ScryptEncoder encoder = new ScryptEncoder();
string hashsedPassword = encoder.Encode("mypassword");

et comparer

ScryptEncoder encoder = new ScryptEncoder();
bool areEquals = encoder.Compare("mypassword", hashedPassword);

Lien Github ici

18
VictorySaber