Все стандартные алгоритмы шифрования работают с байтами или битами.Вы должны иметь возможность использовать любую реализацию, которая поддерживает Delphi XE2 Win32 и Win64, по крайней мере, до тех пор, пока вы сами несете ответственность за декодирование и кодирование строк Unicode.В модуле RTL SysUtils есть класс TEncoding, который вы должны использовать для преобразования ваших строк Юникода в TBytes и из них, используя кодировку по вашему выбору.
Причина, по которой многие реализации алгоритмов шифрования Delphi принимают строковые параметры,в основном исторический, и его не следует понимать так, как будто реализации обязательно знают, что такое символ или строка.Во многих версиях Delphi назад, до того, как тип TBytes был добавлен в VCL / RTL, было пять способов объявить такие методы, и часто использование строк было наиболее удобным.,Это то, что использовала процедура Move и TStream.Недостатком этого является то, что наиболее распространенной ошибкой использования является попытка передать ссылочную типизированную переменную, такую как строка или динамический массив, без предварительного разыменования.
Нетипизированные указатели.Похожая проблема.Разработчики, которые имеют, например, базовый или Java-опыт, не обязательно знакомы с концепцией указателей и ссылочных типов. Параметры открытого массива.Доступ к ним возможен только по элементам, поэтому они плохо сочетаются с алгоритмами шифрования, которые реализованы для работы с непрерывными блоками памяти. Специфичный для библиотеки TBytes = массив типа Byte.Язык Delphi строго типизирован, поэтому он будет работать только в том случае, если разработчик приложения для начала использовал тот же тип библиотеки, который быстро стал бы невозможным, например, если бы разработчику пришлось сначала получить TnxBytes из базы данных NexusDB, преобразовать его в
StreamSec tBytes для шифрования, а затем в Indy TIdBytes для передачи по TIdTCPConnection. (Ansi) строк.Давайте смотреть правде в глаза.По всем вышеперечисленным причинам (и некоторым другим, таким как поддержка языка и RTL), большинство разработчиков использовали строки в качестве буферов памяти переменного размера.