Максимально избавился от string
Всё-равно показывает абрукадабру
Скорее всего проблема в логике - что-то недописываю
Никто не сталкивался?
Код:
function DoDecrypt1: Ansistring;
var
Cipher: TDCP_des;
R: Ansistring;
Key,Vector,Data,TextOut: array of Byte;
src, enc, b64: TBytes;
I: Integer;
index, lunghezza, blocksize, paddingsize: integer;
begin
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');
SetLength(Vector, 16);
for i := 0 to 15 do Vector[i]:=0;
SetLength(Key, 8);
for i := 0 to 7 do Key[i]:=0;
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
begin
Data[lunghezza - index] := 0;
end;
index := Length(TextOut);
SetLength(TextOut, lunghezza);
Cipher.CipherMode:=cmCBC;
Cipher.DecryptCBC(Data[0],TextOut[0], length(Data));
R:='';
for i:=0 To lunghezza Do R:=R+AnsiChar(TextOut[i]);
Cipher.Free;
Result :=R;
end;
Админ: При последующем нарушении оформления кода последуют санкции!