brunnengi Опубликовано 18 апреля, 2015 Поделиться Опубликовано 18 апреля, 2015 Здравствуйте. Есть ли встроенные возможности в FMX пои шифрованию? А то через GetIt скачал LockBox, но примеров толковых нету. Точнее вообще почти ничего нету. Пробовал MD5 создать хотя бы, но выдает что то не то. Пробовал и AES-256 но результат не совпадает с тем что выдают онлайн сервисы. Так что может просто есть в самом FMX возможность стряпать MD5 и AES-256 (с указанием вектора)? Цитата Ссылка на комментарий
Модераторы Andrey Efimov Опубликовано 18 апреля, 2015 Модераторы Поделиться Опубликовано 18 апреля, 2015 (изменено) Давайте я попробую вам помочь. Открываем справку, вбиваем с строку поиска "MD5" и ... вот такой вот результат есть: http://docwiki.embarcadero.com/Libraries/XE8/en/System.Hash с AES-256 посложнее будет... сейчас попробую найти модуль, который недавно видел. Ап. Что-то не нахожу... попадается один ЛокБокс, может я его и видел... Ап 2. Вот такой есть ещё компонент, но не известно будет ли работать в XE5+: DCPcrypt Изменено 18 апреля, 2015 пользователем Andrey Yefimov Локбокс Цитата Ссылка на комментарий
uuxyyz Опубликовано 20 апреля, 2015 Поделиться Опубликовано 20 апреля, 2015 Результаты которые выдает ЛокБокс, не будут совпадать с остальными, не ясно почему, но ребята из локбокс не совсем верно реализовали алгоритм дополнения\обрезки блока (он работает, но реализован не так как описано в алгоритмах шифрования). Мы свою серверную часть написанную на C# фактически подгоняли под это безобразие. Цитата Ссылка на комментарий
xenon54 Опубликовано 20 апреля, 2015 Поделиться Опубликовано 20 апреля, 2015 Кривая реализация стандарта может очень сильно ударить по стойкости шифрования. Цитата Ссылка на комментарий
brunnengi Опубликовано 20 апреля, 2015 Автор Поделиться Опубликовано 20 апреля, 2015 Согласен. Криптостойкость может упасть. Тогда если вы разбираетесь, подскажите пожалуйста кое что. Вот на этом сайте http://crypt-online.narod.ru/crypts/aes если шифровать какой либо текст (например "тест") то каждый раз новый результат, кроме начала: U2FsdGVkX185HglNrSAfqMcXTu7sdecS7MdyYMUZv48= U2FsdGVkX19GCq2mEW0kSfgU5G7jeTo/ZrYmJwyJXRE= U2FsdGVkX18VkSB06L2YyrsQet15YeHGm0hykA3mukA= U2FsdGVkX1+R/DUYUkLzhanBXQXMboeF31pnaX5ZsBo= В принципе на многих онлайн сайтах похожий результат (может либа одна и та же) А вот если скачать приложение для Андроид, то там кодированный текст, не меняется, если пароль и текст одни и те же. Так вот у меня вопрос, что это за "U2FsdGVkX1" выходит на этих сайтах? Должна ли формироваться каждый раз новая строка при шифровании или же должна быть одна и та же? И когда пишут про связку AES-256+base64+salt что они солят? Цитата Ссылка на комментарий
xenon54 Опубликовано 21 апреля, 2015 Поделиться Опубликовано 21 апреля, 2015 Честно говоря, никогда не разбирался с AES'ом. Я раньше юзал ГОСТ 28147-89. Сам его реализовал на делфях со вставками асемблера, ибо без него скорость шифрования и расшифрования была катастрафически мала(со вставками скорость выросла на 2 или 3 порядка, точно не помню). Результат всегда получался одинаковый при шифровании одного и того же содержимого и одного и того же ключа. Что там в этом AES'е х... фиг его знает. zairkz 1 Цитата Ссылка на комментарий
VladimirS Опубликовано 21 апреля, 2015 Поделиться Опубликовано 21 апреля, 2015 а при дешифрации получается верная строка? И приложение для андроида - оно может дешифровать результаты той либы? Цитата Ссылка на комментарий
brunnengi Опубликовано 21 апреля, 2015 Автор Поделиться Опубликовано 21 апреля, 2015 Если дешифровать функцией той же либы, то да, всё верно. Но если зашифрованый этой либой текст попытаться расшифровать тем приложением на андройде или через онлайн сервис, то ничего не прокатит. Текст не дешифруется. Цитата Ссылка на комментарий
uuxyyz Опубликовано 22 апреля, 2015 Поделиться Опубликовано 22 апреля, 2015 Кривая реализация стандарта может очень сильно ударить по стойкости шифрования. В данном случае на криптостойкость это никак не влияет, сами алгоритмы без изменений, разница только в типе записи длинны хвоста, условно локбокс пишет количество байт хвоста, а остальные разницу между длинной блока и длинной хвоста. Цитата Ссылка на комментарий
AndreyS Опубликовано 22 апреля, 2015 Поделиться Опубликовано 22 апреля, 2015 Я тоже пару месяцев назад разбирался с локбоксом, получилось зашифровать текст симметричным и несимметричным алгоритмами. Только расшифровывается все это только этой же библиотекой. Другие не подходят. Начал копать в чем причина и вроде нашел. Сами создатели локбокса пишут, что алгоритмы шифрования (во всяком случае асимметричные) не дают четкого математического метода шифрования, а дают как бы рекомендации. И каждый реализует его на свое усмотрение. Поэтому 2 разные библиотеки дают разный результат. Так что если кто-нибудь знает единую библиотеку, чтобы организовать двустороннее шифрование FMX(Win+MacOS)-Java поделитесь, пожалуйста)) Цитата Ссылка на комментарий
brunnengi Опубликовано 28 апреля, 2015 Автор Поделиться Опубликовано 28 апреля, 2015 А для несиммитричного шифрования ты каким алгоритмом пользовался? Цитата Ссылка на комментарий
AndreyS Опубликовано 29 апреля, 2015 Поделиться Опубликовано 29 апреля, 2015 Я сейчас уже точно не скажу. Либо AES, либо DES. С одним у меня что-то не срасталось, а второй заработал. Но потом, когда я узнал, что расшифровать можно только локбоксом, я расстроился и начал ковыряться с симметричным шифрованием (TwoFish), потом и насчет него тоже расстроился, изобрел очередной велосипед и успокоился. Цитата Ссылка на комментарий
sviat9440 Опубликовано 29 апреля, 2015 Поделиться Опубликовано 29 апреля, 2015 var s: string;procedure Code(var text: string; password: string; decode: boolean);var i, PasswordLength: integer; sign: shortint;begin PasswordLength := length(password);if PasswordLength = 0 then Exit;if decodethen sign := -1else sign := 1;for i := 1 to Length(text) do text := chr(ord(text) + sign * ord(password[i mod PasswordLength + 1]));end;procedure TForm1.Button1Click(Sender: TObject);begin s := Memo1.Text; code(s, Edit1.Text, false); Memo1.Text := s;end;procedure TForm1.Button2Click(Sender: TObject);begin code(s, Edit1.Text, true); Memo1.Text := s;end; Цитата Ссылка на комментарий
sviat9440 Опубликовано 29 апреля, 2015 Поделиться Опубликовано 29 апреля, 2015 Я использую это, подходит и для андроид и для виндовс, на остальных не пробовал. Но при сохранении зашифрованного текста в файл, вместо символов - вопросительные знаки. Как это решить? Пробовал так: var s: string; procedure Code(var text: string; decode: boolean); begin if decode then sign := -1 else sign := 1; text := chr(ord(text) + sign * end; procedure TForm1.Button1Click(Sender: TObject); begin s := Memo1.Text; code(s, false); Memo1.Text := s; end; procedure TForm1.Button2Click(Sender: TObject); begin code(s, true); Memo1.Text := s; end; Но это очень просто, любой знаток может расшифровать. Цитата Ссылка на комментарий
magicxor Опубликовано 20 сентября, 2015 Поделиться Опубликовано 20 сентября, 2015 Delphi-to-PHP Symetric Cipher Tutorial SVN - вот рабочее решение для симметричного шифрования. Эту же библиотеку юзаю и для асимметричного. А вообще, теперь в TPLockBox, вроде, есть поддержка OpenSSL, значит, в теории можно этим OpenSSL-ом шифровать и всё будет совместимо. DCPcrypt вроде как умер, а последняя бета, подправленная для работы в XE7+, у меня выдавала неверный SHA1, например. Шифровать ею не пробовал. Цитата Ссылка на комментарий
neo Опубликовано 25 сентября, 2015 Поделиться Опубликовано 25 сентября, 2015 длина то на андройдовскую подправлена? если например в винде делали так for I:=1 to Length(Value) do begin Result:=Chr(Ord(Value)+Ord(Code[X])); Inc(X); end; то в андройде она начинается на 1 раньше for I:=0 to Length(Value)-1 do begin Result:=Chr(Ord(Value)+Ord(Code[X])); Inc(X); end; Цитата Ссылка на комментарий
Rusland Опубликовано 17 марта, 2016 Поделиться Опубликовано 17 марта, 2016 (изменено) Есть старый проект на Delphi 7, в нем используется dll. Решил в частности эту dll перевести на Delphi RX. После танцев с бубном она скомпилировалась и вроде как работает... за исключением одного момента: в ней используется AES-128 - шифруются/дешифруются TCP пакеты и видимо после переноса в RX шифруются неправильно. Используются obj-файлы, скомпилированные в BCC55 (исходники на C имеются) unit UAES; interface const BlockSize = 16; KsLength = 4*BlockSize; AesContextSize = 4*KsLength+4*3; type TAesContext = packed array[0..AesContextSize-1] of byte; function aes_set_encrypt_key (const Key : PChar; KeyLen : cardinal; var AesContext : TAesContext) : cardinal; external; function aes_encrypt_block (const Ib; var Ob; const AesContext : TAesContext) : cardinal; external; function aes_set_decrypt_key (const Key : PChar; KeyLen : cardinal; var AesContext : TAesContext) : cardinal; external; function aes_decrypt_block (const Ib; var Ob; const AesContext : TAesContext) : cardinal; external; implementation {$L fileenc.obj} {$L aescrypt.obj} {$L aeskey.obj} {$L aestab.obj} {$L pwd2key.obj} {$L prng.obj} {$L hmac.obj} {$L sha1.obj} procedure _memset (var Dest; Value,Count : integer); cdecl; begin FillChar (Dest,Count,chr(Value)); end; procedure _memcpy (var Dest; const Source; Count : integer); cdecl; begin Move (Source,Dest,Count); end; end. Вопросы: 1. Почему шифрование перестало работать после переноса в RX? 2. Где найти библиотеку для шифрования пакетов в AES-128? PS. Интересно C++Builder может скомпилировать C-код в obj? Изменено 18 марта, 2016 пользователем Rusland Цитата Ссылка на комментарий
Rusland Опубликовано 18 марта, 2016 Поделиться Опубликовано 18 марта, 2016 (изменено) Перекомпилировал сишный код с помощью bcc32 из Studio\17.0\bin, но это не помогло. Ищу любой помощи. aes.zip Изменено 18 марта, 2016 пользователем Rusland Цитата Ссылка на комментарий
haword Опубликовано 18 марта, 2016 Поделиться Опубликовано 18 марта, 2016 http://www.fmxexpress.com/free-encryption-library-in-delphi-xe7-firemonkey-on-android-ios-windows-and-osx/ Цитата Ссылка на комментарий
Rusland Опубликовано 18 марта, 2016 Поделиться Опубликовано 18 марта, 2016 haword, не подскажете где скачать для Delphi 10 Seattle? Тут файл отсутствует. Цитата Ссылка на комментарий
rareMax Опубликовано 18 марта, 2016 Поделиться Опубликовано 18 марта, 2016 (изменено) 5 часов назад, Rusland сказал: haword, не подскажете где скачать для Delphi 10 Seattle? Download: https://github.com/TurboPack/LockBox/archive/master.zip https://github.com/TurboPack/LockBox LockBox-master.zip Изменено 18 марта, 2016 пользователем Сысоев Максим Добавил архив. Добавил ссылку на гитхаб Andrey Efimov, Rusland, sviat9440 и 1 другой 4 Цитата Ссылка на комментарий
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.