Показать сообщение отдельно
  #4  
Старый 27.06.2017, 16:27
ComAlex ComAlex вне форума
Прохожий
 
Регистрация: 18.06.2017
Сообщения: 22
Версия Delphi: Delphi XE, C++
Репутация: 10
По умолчанию

Код:
SetLength(Data, 32);
 Data[0]:=HexToInt('0');
 Data[1]:=HexToInt('0');
 Data[2]:=HexToInt('0');
 Data[3]:=HexToInt('28');
 Data[4]:=HexToInt('70');
 Data[5]:=HexToInt('76');
 Data[6]:=HexToInt('65');
 Data[7]:=HexToInt('25');
 Data[8]:=HexToInt('E0');
 Data[9]:=HexToInt('2C');
 Data[10]:=HexToInt('6E');

 Data[11]:=HexToInt('5F');
 Data[12]:=HexToInt('90');
 Data[13]:=HexToInt('3E');
 Data[14]:=HexToInt('BC');
 Data[15]:=HexToInt('59');
 Data[16]:=HexToInt('AC');
 Data[17]:=HexToInt('52');
 Data[18]:=HexToInt('13');
 Data[19]:=HexToInt('8B');
 Data[20]:=HexToInt('48');

 Data[21]:=HexToInt('A4');
 Data[22]:=HexToInt('86');
 Data[23]:=HexToInt('EE');
 Data[24]:=HexToInt('84');
 Data[25]:=HexToInt('70');
 Data[26]:=HexToInt('8F');

 for i :=4 To 32 Do Data[i-4]:=Data[i];
 SetLength(Data,28);

 SetLength(Vector, 16); 
 for i := 0 to 15 do Vector[i]:=0;
 SetLength(Key, 8);
 for i := 0 to 7 do Key[i]:=0;
 R:='';

  Cipher := TDCP_des.Create(nil);
  Cipher.Init(key[0], Length(key)*8, addr(Vector[0]));
  lunghezza := Length(Data);
  index := SizeOf(Data);

  blocksize := Cipher.BlockSize div 8;
  paddingsize := blocksize - (lunghezza mod blocksize);
  Inc(lunghezza, paddingsize);
  SetLength(Data, lunghezza);
  for index := paddingsize downto 1 do Data[lunghezza - index] := 0;

  index := Length(TextOut);
  SetLength(TextOut, lunghezza);
  Cipher.CipherMode:=cmCBC;
  Cipher.DecryptCBC(Data[0],TextOut[0], length(Data));
  for i:=0 To lunghezza Do R:=R+AnsiChar(TextOut[i]);
  Cipher.Free;

 Result :=R;

Заработало на-половину,
т.е. корректно перевелась только половина сообщений (первые 16 символов):

Результат: 5;UNV00000001284іаЏfWжdЧД'#2'Л'#7'EБ¬§:'
Вторые 16 НЕ ПЕРЕВЕЛАСЬ

Ожидаю: 5;UNV000000012844;00008F4A93;20;2

Русских букв нет в результате никогда

Помогите дожать .... !!!!
Ответить с цитированием