2011-01-30 73 views
54

在某些情况下,我已阅读了scrypt及其一些优于bcrypt哈希算法的优势。scrypt的.NET实现

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

+0

实测值链接到[原纸](http://www.bsdcan.org /2009/schedule/attachments/87_scrypt.pdf)(从您发布的帖子中删除了几个链接) – Cameron 2011-01-30 22:30:45

+8

我不确定有多少s密码由好的密码学家进行了审查。在相信加密之前,审查是非常重要的。 – CodesInChaos 2011-01-30 22:36:40

+0

@Cameron:这与Tarsnap网站所反映的不一样:http://www.tarsnap.com/scrypt/scrypt.pdf? – 2011-01-30 22:38:57

回答

52

最后,我在CryptSharp library的C#中发现了一个scrypt的实现。
该库是开源的,使用ISC license

版本历史

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

19

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

不像CryptoSharp,这是一个伟大的图书馆,这一个被实现为围绕一个机库的打包包装。这使得它可以使用原生级别的指令(如SSE2)来提高实现的性能。

缺点是它必须包含本地编译的程序集,检测正确的使用,解包并加载它。这意味着它不适合所有环境,但它在工作的地方效果很好。

15

如果你像我一样,通过快速谷歌(作为顶级链接)来到这个问题,现在可以将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