我已经阅读了scrypt以及在某些情况下它相对于bcrypt散列算法的一些优势。
无论如何,scrypt 似乎还没有被广泛使用。到目前为止,有没有人见过它的 .NET 实现(在 C# 中很受欢迎)?
最后,我在CryptSharp library中找到了 C# 中的 scrypt 实现。
该库是开源的并使用ISC 许可证。
版本历史
1.2.0 2011 年 1 月 23 日:
现在支持 SCrypt KDF 作为 CryptSharp.Utility.SCrypt。
添加了 SCrypt 所需的 djb 的 Salsa20。
如果像我一样,您通过快速谷歌(作为顶部链接出现)来到这个问题,您现在可以将 SCrypt 作为 Nuget 包下载到您的项目中。
PM> Install-Package Scrypt.NET
使用如下:
ScryptEncoder encoder = new ScryptEncoder();
string hashsedPassword = encoder.Encode("mypassword");
并比较
ScryptEncoder encoder = new ScryptEncoder();
bool areEquals = encoder.Compare("mypassword", hashedPassword);
这里有一个用于 .NET 的 SCrypt 的新实现:https ://github.com/replicon/Replicon.Cryptography.SCrypt
与 CryptoSharp 不同的是,它是一个很棒的库,它是作为一个封装在本地库周围的包装器来实现的。这允许它使用本机级指令(如 SSE2)来显着提高实现的性能。
缺点是它必须包含本机编译的程序集,检测正确的使用,解包,然后加载它。这意味着它并不适合所有环境,但它在工作的地方工作得很好。