2011-01-30 5 views
54

Я читал около scrypt и некоторые из его преимуществ по сравнению с алгоритмом хэширования при определенных обстоятельствах..NET реализация scrypt

Во всяком случае, кажется, что scrypt еще не так широко используется. Кто-нибудь видел до сих пор его реализацию .NET (предпочтение от C#)?

+0

Найдена ссылка на оригинальную статью [] (http://www.bsdcan.org /2009/schedule/attachments/87_scrypt.pdf) (несколько ссылок удалены из того, который вы опубликовали) – Cameron

+8

Я не уверен, сколько крипт был рассмотрен хорошими криптографами. И обзор очень важен, прежде чем вы доверяете криптографии. – CodesInChaos

+0

@Cameron: Разве это не тот же самый PDF-сайт, на котором ссылается Tarsnap: http://www.tarsnap.com/scrypt/scrypt.pdf? –

ответ

52

Наконец-то я нашел реализацию scrypt в C# в CryptSharp library.
Библиотека с открытым исходным кодом и использует ISC license.

История версий

1.2.0 23 января 2011:
Scrypt KDF теперь поддерживается CryptSharp.Utility.SCrypt.
Добавлен dsb salsa20, требуемый SCrypt.

+5

Слава богу за openource ay. https: // GitHub.com/ChrisMcKee/cryptsharp & in NUGET https://nuget.org/packages/CryptSharp/ –

+0

Никогда ранее не слышал о лицензии ISC. – nawfal

19

Там новая реализация Scrypt для .NET здесь: https://github.com/replicon/Replicon.Cryptography.SCrypt

В отличии от CryptoSharp, что большая библиотека, это один реализован в виде упакованной оболочки родной библиотеки. Это позволяет использовать инструкции на собственном уровне (например, SSE2), чтобы немного улучшить производительность реализации.

Недостатком является то, что он должен содержать встроенные скомпилированные сборки, определять правильную, использовать, распаковывать, а затем загружать. Это означает, что он не идеален для всех сред, но отлично работает там, где он работает.

+0

Я предпочел бы сохранить родные DLL в том же каталоге, что и сборка, а не распаковывать их по требованию. – CodesInChaos

+4

Разве не все дело в том, что он не работает? –

+42

Мартин: Конечно, весь смысл скрипта в том, что даже когда он идеально реализован, он не работает. Но вы не хотите использовать библиотеку, которая выполняет в десять раз медленнее, чем реализация, которую использует злоумышленник грубой силы. Это заставит вас использовать параметры настройки, которые кажутся сильными, но на самом деле намного слабее, чем вы ожидаете. – mfenniak

15

В случае, как и я, вы пришли к этому вопросу через быстрый google (подобрали верхнюю ссылку), теперь вы можете загрузить 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

 Смежные вопросы

  • Нет связанных вопросов^_^