powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi Encryption Compendium VS DCPcrypt
16 сообщений из 16, страница 1 из 1
Delphi Encryption Compendium VS DCPcrypt
    #39458444
dalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пытаюсь сравнить библиотечки шифрования. но не выходит (при, казалось бы, прочих равных) произвести их полную взаимозаменяемость.
Может кто подскажет - что не так делаю? Нюансы инициализации?

делаю так:

Код: pascal
1.
2.
3.
4.
5.
var
  pas, txt:String; //некий пароль и некий текст

  hash256_dcp, hash256_dec:String; //хэши для DCP и DEC
  txt_dcp, txt_dec:String; //итоговый текст для DCP и DEC


...

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
//DCP
with TDCP_sha256.Create(nil) do
  begin
  Init;
  UpdateStr(pas);
  SetLength(hash256_dcp, HashSize shr 3);
  Final(hash256_dcp[1]);
  Burn;
  Free;
  end;

with TDCP_rijndael.Create(nil) do
  begin
  Init(hash256_dcp[1], Length(hash256_dcp), nil);
  SetLength(txt_dcp, Length(txt));
  EncryptCBC(txt[1], txt_dcp[1], Length(txt));
  Free;
  end;


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
//DEC
with THash_SHA256.Create do
  begin
  Init;
  hash256_dec := CalcBuffer(pas[1], Length(pas), TFormat_Copy);
  Free;
  end;

with TCipher_Rijndael.Create do
  begin
  Init(hash256_dec[1], Length(hash256_dec), EmptyStr, 0);
  SetLength(txt_dec, Length(txt));
  Encode(txt[1], txt_dec[1], Length(txt));
  Free;
  end;



хэши совпадают. итоговый текст - нет (его, понятно, надо привести в что-то типа Base64, но не в этом суть).
что не так?
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39458446
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalx,
тексты не совпадает, а краптографические хеши от них - совпадают? Хи-хи-хи.

Показывай весь код теста. Что с чем сравниваешь.
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39458449
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и что за дельфи у тебя еще. Если с юникодными строками, то указывать длину строкового буфера нужно в байтах.
Посмотри еще - в некоторых библиотеках длина ключа/вектора инициализации указывается в битах, в некоторых - в байтах.
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39458452
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для блочных шифров устанавливать размер целевого буфера равным размеру исходной строки -
плохая идея.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39458456
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДля блочных шифров устанавливать размер целевого буфера равным размеру исходной строки -
плохая идея.

Без разницы, конкретно для этих библиотек.
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39458476
dalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 чччД

совпадают хеши паролей. посмотрите код. hash256_dcp , hash256_dec - это хеши от pas . слава богу что они совпадают. а то было бы совсем странно.

уже далее они используются для шифрования текста txt в txt_dcp и в txt_dec . и вот то, что в txt_dcp , txt_dec - не совпадает.

код приведён полостью (сделал отдельную выжимку). нет только инициализации pas и txt. и какого-либо отображения итоговых txt_dcp и txt_dec .

дельфя в примере - 7-ка. там не юникод, потому длины столь халатно.

2 Dimitry Sibiryakov

делалось по аналогии и по примеру демок с этими библиотеками.
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39459955
dalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уважаемый all. ни каких идей?

на всякий случай демо проект с библиотеками тут (на яндекс диск из-за размера)
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39459967
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalx, навскидку: ты уверен, что TCipher_Rijndael.Encode использует CBC?
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39459974
dalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 GunSmoker
там есть строка (чуть ранее по коду)
Код: pascal
1.
mode := cmCBCx;

смею надеяться, что указав это - кодит по CBC
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39459999
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalx,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
with TDCP_rijndael.Create(nil) do
  begin
  Init(hash256_dcp[1], Length(hash256_dcp) * 8, @iv[0]);
  SetLength(txt_dcp, Length(txt));
  EncryptCFB8bit(txt[1], txt_dcp[1], Length(txt));
  Free;
  end;



Потому что:
cmCBCx = Cipher Block Chainung, with CFB8 padding of truncated final block
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39460003
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey CFB8
На счёт этого поторопился...
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39460009
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyНа счёт этого поторопился...
В общем, вот. Вместо EncryptCBC() пишем:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  src := Pointer(txt);
  dst := Pointer(txt_dcp);
  for ndx := 1 to Length(txt) div 16 do
   begin
    EncryptCBC(src^, dst^, 16);
    inc(src, 16);
    inc(dst, 16);
   end;

  If Length(txt) mod 16 <> 0 then
   EncryptCFB8bit(src^, dst^, Length(txt) mod 16);
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39460014
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без цикла:
Код: sql
1.
2.
3.
4.
5.
  If Length(txt) >= 16 Then
   EncryptCBC(txt[1], txt_dcp[1], Length(txt) - Length(txt) mod 16);

  If Length(txt) mod 16 <> 0 then
   EncryptCFB8bit(txt[Length(txt) - Length(txt) mod 16 + 1], txt_dcp[Length(txt) - Length(txt) mod 16 + 1], Length(txt) mod 16);
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39460047
dalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Kazantsev Alexey

огромное спасибо!

про упущенноеупоротое " * 8 " я бы точно не сразу вспомнил. так бы и возился с огрызком ключа/хэша.

а про паддинг - начал догадываться по исходнику разбирая. надо таки документацию читать ;) .

ещё раз - спасибо!
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39460051
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД...
Посмотри еще - в некоторых библиотеках длина ключа/вектора инициализации указывается в битах, в некоторых - в байтах.
...
Рейтинг: 0 / 0
Delphi Encryption Compendium VS DCPcrypt
    #39460067
dalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 чччД

да. да. да. каюсь. упустил
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi Encryption Compendium VS DCPcrypt
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]