Код:
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
Русских букв нет в результате никогда
Помогите дожать .... !!!!