.NET实现scrypt

Mar*_*erl 56 .net c# hash cryptography scrypt

在某些情况下,我已经阅读了关于scrypt及其优于bcrypt哈希算法的一些优点.

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

Mar*_*erl 53

最后,我在CryptSharp库中找到了C#中的scrypt实现.
该库是开源的,使用ISC许可证.

版本历史

1.2.0 2011年1月23日:
现在支持SCrypt KDF为CryptSharp.Utility.SCrypt.
添加了SCrypt所需的djb的Salsa20.

  • 感谢上帝为开源ay.https://github.com/ChrisMcKee/cryptsharp&在NUGET https://nuget.org/packages/CryptSharp/ (6认同)

mfe*_*iak 20

这里有一个新的SCrypt for .NET实现:https://github.com/replicon/Replicon.Cryptography.SCrypt

与CryptoSharp不同,CryptoSharp是一个很棒的库,它可以作为本机库的打包包装器实现.这允许它使用本机级指令(如SSE2)来提高实现的性能.

缺点是它必须包含本机编译的程序集,检测正确的程序集,解压缩它,然后加载它.这意味着它并不适合所有环境,但它在有效的地方运行良好.

  • 马丁:当然,scrypt的全部意义在于,即使它理想地实施,它也不是高效的.但是,您不希望使用比蛮力攻击者将要使用的执行速度慢十倍的库.这将导致您使用看起来很强的调整参数,但实际上远远低于您的预期. (42认同)
  • 它不是表现不高的全部意义吗? (4认同)

Vic*_*ber 18

如果像我一样,你通过快速谷歌来到这个问题(作为顶部链接)你现在可以将SCrypt作为Nuget包下载到你的项目中.

PM> Install-Package Scrypt.NET
Run Code Online (Sandbox Code Playgroud)

使用方法如下:

ScryptEncoder encoder = new ScryptEncoder();
string hashsedPassword = encoder.Encode("mypassword");
Run Code Online (Sandbox Code Playgroud)

和比较

ScryptEncoder encoder = new ScryptEncoder();
bool areEquals = encoder.Compare("mypassword", hashedPassword);
Run Code Online (Sandbox Code Playgroud)

Github链接在这里