Страница 1 из 2

Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 25.06.2018 02:09:31
Ism
Привет

Нужен пример функции для симметричного шифрования(строка + ключ = шифр и обратно), на паскале работающего кода не нашел

В командной сроке openssl оно работает https://superuser.com/questions/724986/ ... decryption

Но хотелось бу культурно, через dll. В лазарусе есть модуль openssl, но там лишь вызовы. Есть dcpcrypt, но она заброшена, и примеры кода не работают, есть подозрение на несовместимость с fpc 3

Есть ли актуальные библиотеки шифрования для паскаля, не обязательно openssl ?

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 25.06.2018 08:26:52
fedan
В составе fpc не полный биндинг openssl.
https://github.com/decfpc/DelphiEncryptionCompendium
Код: Выделить всё
program project1;

uses
  SysUtils,
  DECUtil,
  DECCipher;

const
  STATIC_KEY: array[0..15] of Byte = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
var
  IV: array[0..15] of Byte;
  Plaintext: Binary;
  Ciphertext: TBytes;
begin
  RandomSeed;
  Plaintext := 'abcdefghijklmnopqrstuvwxyz';
  with TCipher_Rijndael.Create do
    try
      Mode := cmCBCx;
      RandomBuffer(IV, 16);
      Init(STATIC_KEY, 16, IV, 16);
      SetLength(Ciphertext, Length(Plaintext));
      Encode(Plaintext[1], Ciphertext[0], Length(Plaintext));
      Done; // only needed when same object will be used for further operations
      FillChar(Plaintext[1], Length(Plaintext), 0);
      Decode(Ciphertext[0], Plaintext[1], Length(Ciphertext));
      Assert(Plaintext = 'abcdefghijklmnopqrstuvwxyz');
    finally
      Free;
    end;
end.


Добавлено спустя 1 час 34 минуты 45 секунд:
Вот ещё покури
http://www.sql.ru/forum/1260973/delphi-encryption-compendium-vs-dcpcrypt

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 25.06.2018 19:28:28
Ism
fedan писал(а):В составе fpc не полный биндинг openssl.

Спасибо

Но както странно, биндинг есть, а использовать нельзя. Похоже шифрование для паскалистов не актуально, раз такое творится с библиотеками

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 25.06.2018 19:42:32
Снег Север
Шифрование на паскале представляет интерес только для студенческих лабораторок, для работы используют оптимизированные сишные библиотеки а на паскале только обертки вызовов, как вы и увидели.

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 25.06.2018 21:01:06
Ism
Снег Север писал(а):Шифрование на паскале представляет интерес только для студенческих лабораторок, для работы используют оптимизированные сишные библиотеки а на паскале только обертки вызовов, как вы и увидели.

Я бы с радостью использовал обертку вызовов openssl ибо это еще проверено и надежно, но так и не смог написать банальную функцию шифрования строки ключом ибо примеры кода только на С. Перегонять это на паскаль весьма непросто

Странность в том, что людям проще оказалось написать свое шифрование на паскале, чем сделать удобный вызов биндингов openssl

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 26.06.2018 08:10:16
Снег Север
Я никогда не интересовался конкретно openssl, но вызовы для сишных функций писал неоднократно. Если это именно си, а не си-пи-пи, то какие там трудности-то? Вполне однозначное соответствие переменных. Вызов как cdecl. Структуры - простые рекорды.

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 26.06.2018 16:18:37
fedan

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 26.06.2018 16:44:01
Vadim
Ism писал(а):Нужен пример функции для симметричного шифрования(строка + ключ = шифр и обратно)

А метод "xor" подойдёт? :-)

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 26.06.2018 18:09:50
fedan
Во, ещё либу нашел, кто-нибудь пользовался?

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 26.06.2018 18:38:46
wofs
Может подойдет: SeCrypt
Не пользовался, но рассматривал к применению когда-то.

Ну и небольшой баян в тему.

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 27.06.2018 01:46:42
Ism
Vadim писал(а):А метод "xor" подойдёт?

Изначально я так и делал, но зачем использовать слабый шифр, если есть нормальные ? Поэтому решил закрыть вопрос написав шифрование по всем правилам

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 27.06.2018 12:33:06
Снег Север
Cryptographic algorithms
http://wolfgang-ehrhardt.de/crypt_en.html
Всё придумано до нас! :D

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 27.06.2018 21:07:22
fedan
https://github.com/Fr0sT-Brutal/awesome-delphi#encryption

Добавлено спустя 5 часов 33 секунды:
Только EVP_aes_256_cbc, как из первого поста.Для старта пойдёт. Можно расширять самому.
https://github.com/PascalCoin/PascalCoin/blob/master/src/core/UAES.pas

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 28.06.2018 19:53:34
Ism
Всем спасибо !

А то в freepascal найти чтото несколько сложнее, ибо на первых местах в поиске веб питон и php :)

Добавлено спустя 16 часов 44 минуты 32 секунды:
Короче единственная актуальная библиотека оказалась в pascal coin, пришлось повозиться чтоб выковырять модули из проекта. И оно таки работает. Только в ней есть проверка версии библиотеки и переход на openssl 1.1

https://github.com/decfpc/DelphiEncryptionCompendium не собрался, ругался на gzio, хотя в лазарусе он есть

Остальные библиотеки либо устарели(не совместимы с fpc 3), либо плохо поддерживаются как модуль лазарус openssl

Re: Ищу пример функции симметричного шифрования openssl

СообщениеДобавлено: 30.06.2018 09:00:03
Снег Север
Работа с openssl крутится вокруг почты и https, так что и вызовы функций востребованы в инди, синапсе. "Там их есть" (С) :D