Implementação .NET de scrypt
-
27-10-2019 - |
Solução
Finalmente encontrei uma implementação de scrypt em C # na biblioteca CryptSharp .
A biblioteca é de código aberto e usa a licença ISC .
Histórico da versão
1.2.0 23 de janeiro de 2011:
O SCrypt KDF agora é compatível como CryptSharp.Utility.SCrypt.
Adicionado o Salsa20 do djb, exigido pelo SCrypt.
Outras dicas
Há uma nova implementação de SCrypt para .NET aqui: https://github.com/replicon/Replicon.Cryptography.SCrypt
Ao contrário do CryptoSharp, que é uma ótima biblioteca, este é implementado como um empacotador em torno de uma biblioteca nativa.Isso permite que ele use instruções de nível nativo (como SSE2) para melhorar um pouco o desempenho da implementação.
A desvantagem é que ele deve conter assemblies compilados nativos, detectar o correto para usar, descompactá-lo e carregá-lo.Isso significa que não é ideal para todos os ambientes, mas funciona muito bem onde funciona.
Caso, como eu, você tenha respondido a essa pergunta por meio de um rápido Google (apareceu como o link superior), agora você pode baixar o SCrypt como um pacote Nuget em seu projeto.
PM> Install-Package Scrypt.NET
Use da seguinte maneira:
ScryptEncoder encoder = new ScryptEncoder();
string hashsedPassword = encoder.Encode("mypassword");
e comparando
ScryptEncoder encoder = new ScryptEncoder();
bool areEquals = encoder.Compare("mypassword", hashedPassword);