2011-01-30 66 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