Функция вывода ключей в Delphi 2010

Кто-нибудь знает, как сгенерировать ключ из текстового пароля? Я имею в виду безопасную функцию получения ключа с солью.

ie.

function KeyDerivationProc(APassword : String) : String;
begin
     // ...
end;

Я использую Делфи (2010). Я думал о DCPcrypt2 и OpenPGPBlackbox, но тут я совсем запутался.

Любая помощь будет принята с благодарностью, спасибо!


person TheDude    schedule 24.09.2012    source источник
comment
Здесь нет общего ответа, это зависит от реализации используемой библиотеки. Вам нужно оценить библиотеку (т.е. поиграть с демонстрационными проектами), чтобы выяснить, как она используется.   -  person Hendra    schedule 25.09.2012
comment
SecureBlackbox 10 (в настоящее время находится в состоянии предварительного выпуска) предлагает как функции получения ключа, так и функции BCrypt (оба были добавлены в версию 10).   -  person Eugene Mayevski 'Callback    schedule 25.09.2012
comment
@EugeneMayevski'EldoSCorp: Да, я наконец-то выбрал SecureBlackbox 10 :)   -  person TheDude    schedule 26.09.2012


Ответы (1)


Для PBKDF2, который является более или менее стандартным, вы можете получить только библиотеки Chilkat:

http://www.example-code.com/delphi/crypt2_pbkdf2.asp

Так что вам может быть лучше взглянуть на bcrypt, для которого есть реализация на этом замечательном сайте, и если вы ищете его , а также некоторые другие.

person Maarten Bodewes    schedule 24.09.2012
comment
DCPcrypt уже имеет встроенную процедуру InitStr: procedure InitStr(const Key: string; HashType: TDCP_hashclass); - person Shambhala; 25.09.2012
comment
@Shambhala полезно знать, потому что поиск в Google DCPcrypt и bcrypt дал мне 0 пригодных для использования результатов (что, честно говоря, не является хорошим знаком для криптобиблиотеки) - person Maarten Bodewes; 25.09.2012
comment
@WarrenP: Что ж, поскольку вы кажетесь высокопоставленным экспертом Delphi по stackoverflow, я с радостью поверю вам на слово. И это была библиотека, которую Гдхами все равно хотел использовать. - person Maarten Bodewes; 25.09.2012
comment
Я действительно ищу что-то в точности похожее на код Chilkat (с солью и счетчиком итераций), но, честно говоря, использование ActiveX в delphi абсолютно нет-нет для меня. - person TheDude; 25.09.2012
comment
Упомянутый вами код TBCrypt кажется тем, что мне нужно, но я беспокоюсь о качестве кода (без обид, но насколько он безопасен? Я не эксперт по безопасности, поэтому я не могу решить / знать) - person TheDude; 25.09.2012
comment
@Shambhala и @WarrenP: Хотите расширить, пожалуйста? Я прочитал код InitStr(), но не знаю, как установить/изменить динамическую соль/количество итераций. Я тоже не уверен, как я могу использовать DCPcrypt с bcrypt - person TheDude; 25.09.2012
comment
@Gdhami - проблема безопасности здесь не так важна, потому что вы можете просто сравнить хэши с другими реализациями BCrypt (например, PHP crypt). Вы, вероятно, обеспокоены безопасностью алгоритма, а не реализации, если библиотека возвращает правильные результаты, вы можете ее использовать. - person martinstoeckli; 25.09.2012
comment
Этот связанный вопрос показывает вам достаточно того, как делать bcrypt? stackoverflow.com/ вопросы/9710205/ - person Warren P; 27.09.2012