.NET实现scrypt

时间:2011-01-30 22:25:07

标签: c# .net cryptography hash scrypt

在某些情况下,我读过scrypt及其优于bcrypt哈希算法的一些优点。

无论如何,似乎scrypt还没有被广泛使用。到目前为止有没有人看到它的.NET实现(在C#中受青睐)?

3 个答案:

答案 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);

Github link here