最后我在CryptSharp库中找到了一份C#版本的scrypt实现。
该库是开源的,并使用ISC许可证。
版本历史
1.2.0 2011年1月23日:
SCrypt KDF现在作为CryptSharp.Utility.SCrypt得到支持。
添加了djb的Salsa20,是SCrypt所需的。
PM> Install-Package Scrypt.NET
使用方法如下:
ScryptEncoder encoder = new ScryptEncoder();
string hashsedPassword = encoder.Encode("mypassword");
并进行比较
ScryptEncoder encoder = new ScryptEncoder();
bool areEquals = encoder.Compare("mypassword", hashedPassword);
这里有一个新的SCrypt .NET实现:https://github.com/replicon/Replicon.Cryptography.SCrypt
与伟大的库CryptoSharp不同,这个实现是作为一个打包封装了本地库的包装器实现的。这使得它可以使用本地级别的指令(如SSE2)大大提高实现的性能。
缺点是它必须包含本地编译的程序集,检测正确的程序集并解压加载它。这意味着它并不适用于所有环境,但在适合的环境中表现很好。