Implémentation .NET de scrypt

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

Quoi qu’il en soit, il semble que Scrypt n’est pas encore largement utilisé. Quelqu’un a-t-il déjà vu une implémentation .NET (favorisée en C #)?

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

  • CryptSharp

Historique des versions

1.2.0 23 janvier 2011:
Le Krypt SCrypt est maintenant pris en charge en tant que CryptSharp.Utility.SCrypt.
Ajout de Salsa20 de djb, requirejs par SCrypt.

Il existe 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 sous la forme d’un wrapper intégré dans une bibliothèque native. Cela lui permet d’utiliser des instructions au niveau natif (comme SSE2) pour améliorer 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 que ce n’est pas idéal pour tous les environnements, mais cela fonctionne très bien là où ça marche.

Au cas où, comme moi, vous êtes arrivé à cette question via un rapide google (apparu comme lien en haut), 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(); ssortingng hashsedPassword = encoder.Encode("mypassword"); 

et en comparant

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

Lien Github ici