答案 0 :(得分:52)
最后,我在CryptSharp library中找到了C#中scrypt的实现 该库是开源的,使用ISC license。
版本历史记录
1.2.0 2011年1月23日:
现在支持SCrypt KDF作为CryptSharp.Utility.SCrypt 添加了SCrypt所需的djb的Salsa20。
答案 1 :(得分:20)
这里有一个新的SCrypt for .NET实现:https://github.com/replicon/Replicon.Cryptography.SCrypt
与CryptoSharp不同,CryptoSharp是一个很棒的库,它可以作为本机库的打包包装器实现。这允许它使用本机级指令(如SSE2)来提高实现的性能。
缺点是它必须包含本机编译的程序集,检测正确的程序集,解压缩它,然后加载它。这意味着它并不适用于所有环境,但它在有效的环境中运行良好。
答案 2 :(得分:18)
如果像我一样,你通过快速谷歌来到这个问题(作为顶部链接)你现在可以将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);