2011-01-30 13 views
54

私はscryptについて読んでおり、特定の状況ではbcryptハッシュアルゴリズムよりも優れています。.NETのscryptの実装

とにかく、scryptはまだ広く使われていないようです。誰かがこれまでに.NET実装(C#で好評)を見ていますか?

+0

が[元の紙]にリンク(http://www.bsdcan.orgを発見比較します/2009/schedule/attachments/87_scrypt.pdf)(投稿したリンクからいくつかのリンクが削除されました) – Cameron

+8

秘密は良い暗号学者によって見直されました。暗号を信頼する前に、レビューは非常に重要です。 – CodesInChaos

+0

@Cameron:それはTarsnapサイトがrefresresと同じPDFではない:http://www.tarsnap.com/scrypt/scrypt.pdf? –

答えて

52

最後に、CryptSharp libraryのC#でscryptの実装が見つかりました。
ライブラリはオープンソースであり、ISC licenseを使用しています。

  • CryptSharp

    1.2.0 2011年1月23日バージョン履歴:SCrypt KDFは今CryptSharp.Utility.SCryptとしてサポートされて

    SCryptが必要とするdjbのSalsa20が追加されました。

    +5

    opensource ayの神に感謝します。 https:// github。com/ChrisMcKee/cryptsharp&NUGET https://nuget.org/packages/CryptSharp/ –

    +0

    以前はISCライセンスについて聞いたことがありません。 – nawfal

    19

    .NET用SCryptの新しい実装がここにあります:偉大なライブラリですCryptoSharpとは異なりhttps://github.com/replicon/Replicon.Cryptography.SCrypt

    、これはネイティブライブラリの周りにパッケージのラッパーとして実装されています。これにより、ネイティブレベルの命令(SSE2など)を使用して実装のパフォーマンスをかなり向上させることができます。

    欠点は、ネイティブコンパイルされたアセンブリが含まれていること、適切なものを検出して使用すること、アンパッケージしてロードすることであるということです。つまり、すべての環境にとって理想的ではありませんが、動作する場所ではうまくいきます。

    +0

    私はむしろ必要に応じてアンパックするのではなく、ネイティブdllをアセンブリと同じディレクトリに保存したいと思います。 – CodesInChaos

    +4

    それはパフォーマンスがないという要点ではないのですか? –

    +42

    Martin:確かに、scryptの全ポイントは、それが理想的に実装されていても、それは実行可能ではないということです。しかし、あなたは、ブルートフォース攻撃者が使用しようとしている実装より10倍遅く実行するライブラリを使用することは望ましくありません。これにより、強く見えるチューニングパラメータを使用するようになりますが、実際には予想よりもはるかに弱くなります。 – mfenniak

    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