Асимметричное шифрование Delphi

Я ищу Delphi-реализацию асимметричного алгоритма шифрования без каких-либо зависимостей от внешних DLL. Есть ли в наличии?

Моя цель - зашифровать / расшифровать строку (или массив байтов) с помощью пары открытого / закрытого ключей.


person Carlos Barbosa    schedule 08.06.2010    source источник


Ответы (6)


SecureBlackBox от Eldos предлагает собственное комплексное решение, включающее управление сертификатами и доступ к внешним криптоустройствам (например, USB жетоны)

person Community    schedule 08.06.2010
comment
Читая его документацию, кажется, что он не позволяет зашифровать строку с использованием асимметричного алгоритма, а только симметричного. - person Carlos Barbosa; 09.06.2010
comment
Посмотрите на класс ElRSAPublicKeyCrypto. Возможно, вам придется пройти через Stream (при необходимости используйте класс TStringStream), потому что вы должны угрожать зашифрованным данным как двоичным потоком, чтобы избежать преобразования набора символов. - person ; 09.06.2010
comment
Да, похоже, это покрывает мои потребности. Спасибо! - person Carlos Barbosa; 10.06.2010

LockBox теперь улучшен. Он позволяет использовать длинные ключи для шифрования RSA, AES и находится в активной разработке. Это бесплатный, открытый исходный код и 100% нативный код без библиотек DLL.

person Sean B. Durkin    schedule 26.10.2010

Вы можете попробовать Lockbox - http://sourceforge.net/projects/tplockbox/. Это бесплатно и включает в себя, среди прочего, RSA (Blowfish, MD5, SHA-1, DES, тройной DES, Rijndael и цифровую подпись сообщений).

Он поставляется в комплекте с хорошим примером RSA, который демонстрирует, как сгенерировать ваши открытые / закрытые ключи и как на самом деле зашифровать и расшифровать данные с помощью этих ключей.

В настоящее время я использую его с Delphi 2010.

person norgepaul    schedule 09.06.2010
comment
До улучшения LockBox реализует только короткие ключи и слабые блочные шифры. Последнему выпуску сейчас семь лет, и в криптографии использование старого, не обновленного кода может быть опасным. - person ; 10.06.2010
comment
Приведенный выше комментарий относится только к Lockbox 2. Lockbox 3 - большое улучшение по сравнению с Lockbox 2 - асимметричные ключи произвольной длины и надежные шифры. - person Sean B. Durkin; 26.11.2010

Я понимаю, что в исходном вопросе говорилось «нет внешних DLL», но при отсутствии приемлемого ответа, возможно, вам стоит взглянуть на DLL OpenSSL вместе с этой ссылкой Delphi, которая содержит импорт модуль для библиотеки и несколько хороших примеров того, как его использовать, включая шифрование RSA.
Я повозился с этим, и он работает очень хорошо. Чтобы заставить его работать с Unicode Delphi, требуются некоторые изменения, но в основном они связаны с изменением PChar на PAnsiChar или PBytes.
Простые оболочки Delphi теперь позволяют мне подписывать / проверять / шифровать sym или asym и использовать SSL. И давайте будем честными - распространение DLL OpenSSL намного проще, чем у некоторых предложений Microsoft. К тому же это бесплатно и в хорошем состоянии.

person shunty    schedule 10.06.2010

Взгляните на пакет FGInt на этом сайте: http://submanifold.be/

Если вы умеете пользоваться службами Windows, есть Crypto API: http://msdn.microsoft.com/en-us/library/aa380255(v=VS.85).aspx

Если вы ориентируетесь на Vista и выше, есть новый API криптографии: следующее поколение. Это также поддерживает шифрование на основе эллиптических кривых: http://msdn.microsoft.com/en-us/library/aa376210(VS.85).aspx

person Nat    schedule 09.06.2010
comment
Заглянул в пакет FGIntRSA (и FGInt), но из-за отсутствия какой-либо документации не смог понять, как обрабатывать открытые / закрытые ключи. - person Carlos Barbosa; 09.06.2010
comment
У меня нет желания или времени для Windows Crypto API в настоящее время, я ищу быструю реализацию. - person Carlos Barbosa; 09.06.2010
comment
@carlosb - вы хотите, чтобы решение по обеспечению безопасности было однозначным? Вы уверены? Результат будет таким же, как если бы шифрование не использовалось вообще: D - person Alex; 10.06.2010
comment
Я согласен с Александром в этом ... Могу я спросить, для чего он используется? - person Nat; 10.06.2010
comment
Я предполагаю, что OP означал библиотеку Delphi для реализации безопасности без необходимости бороться с Windows CryptoAPI или реализовывать алгоритмы с нуля. Сделай сам в сфере безопасности тоже может быть очень опасным. - person ; 10.06.2010
comment
Александр и Нат, цель проста, необходимо зашифровать строку активации с помощью закрытого ключа на сервере, эта строка будет обрабатываться пользователями, которые, если не зашифрованы, могут быть подделаны, эта строка активации затем будет расшифрована в приложении с использованием общедоступного ключ. Это должно быть что-то быстрое и эффективное для реализации при наличии соответствующей инфраструктуры Delphi, что-то вроде DCPCrypt, но с поддержкой асимметричного алгоритма. - person Carlos Barbosa; 10.06.2010

Еще один очень хороший и достаточно полный пакет - Delphi Encryption Compendium (DEC) 5.2. Вы можете загрузить (бесплатно с исходным кодом) с http://www.torry.net/pages.php?id=519#939342.

person K.Sandell    schedule 09.06.2010
comment
В этом пакете нет реализации асимметричного алгоритма. - person Carlos Barbosa; 09.06.2010
comment
Да, забыл об этом. Прошло некоторое время с тех пор, как я сам им пользовался ... но в остальном это отличный пакет. - person K.Sandell; 10.06.2010