Компонент для шифрования

Мне нужна библиотека шифрования (VCL или нет), которая будет работать со строками Delphi XE2 и unicode, 64 и 32 бит. Мне это нужно, чтобы хранить данные в базе данных.

3 ответа

Страница криптографии Delphi (DCPCrypt) - это библиотека с открытым исходным кодом, написанная Дэвидом Бартоном ([removed_email]) http://www.************.co.uk/opensource/dcpcrypt, которая представляет собой сборник очень всеобъемлющих, свободно экспортировать, симметричный ключ, криптографические компоненты.


Я нашел этот на форуме Embarcadero, версию DCPCrypt, обновленную пользователем. Вот code, если кто-то споткнется в ту же проблему. Я также нашел эту библиотеку (TurboPower LockBox), которая поддерживает Delphi Xe2


Все стандартные алгоритмы шифрования работают с байтами или битами. Вы должны иметь возможность использовать любую реализацию, которая поддерживает Delphi XE2 Win32 и Win64, по крайней мере, пока вы сами несете ответственность за декодирование и кодирование строк в Юникоде. В модуле RTL SysUtils есть класс TEncoding, который вы должны использовать для преобразования строк unicode в TBytes и из TBytes с использованием кодировки по вашему выбору.

Причина, по которой многие алгоритмы шифрования Delphi принимают строковые параметры, в основном исторические, и не следует понимать так, как если бы реализации обязательно знали, что такое символ или строка. Многие версии Delphi назад, до того, как тип TBytes был добавлен в VCL/RTL, было пять способов объявить такие методы, и использование строк часто было наиболее удобным.

  • Untyped параметры const и var. Это то, что использовала процедура Move и TStream. Недостатком этого является то, что наиболее распространенная ошибка использования заключается в попытке передать ссылочную типизированную переменную, такую ​​как строка или динамический массив, без разглашения ее в первую очередь.
  • Неттипированные указатели. Аналогичная проблема. Разработчики, которые пришли, например, фон Basic или Java не обязательно знакомы с концепцией указателей и ссылочных типов.
  • Открыть параметры массива. Доступ к ним возможен только с помощью элемента, поэтому они плохо смешиваются с алгоритмами шифрования, которые реализованы для работы с непрерывными блоками памяти.
  • Специфичный для библиотеки TBytes = массив типа байтов. Язык Delphi строго типизирован, так что это будет работать только в том случае, если разработчик приложения использовал тот же самый тип библиотеки, чтобы начать с него, что бы быстро становилось неосуществимым, например. если разработчику пришлось сначала захватить TnxBytes из базы данных NexusDB, превратите его в StreamSec tBytes, чтобы зашифровать его, а затем в Indy TIdBytes передать его через TIdTCPConnection.
  • (ANSI) строки. Позвольте ему встретиться. По всем вышеперечисленным причинам (и некоторым другим, таким как поддержка языка и RTL), большинство разработчиков использовали строки в качестве буферов памяти с переменным размером.

licensed under cc by-sa 3.0 with attribution.