Показать сообщение отдельно
Старый 24.04.2010, 17:55   #7
Новичок
 
Регистрация: 23.04.2010
Сообщений: 11
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
mr_green пока неопределено
По умолчанию

После дешивровки ключа получилось число:
Код:
8C6A36A68B68F9C39855859BE694ACFF6400813801BD0295D9C0E4F3ED30AFEBBB8FCE61A0C6EFC5610CF800DB887972334A1515F7A010066191F34901665E9BB082814BB03AAAE439985877B1547CF7CBA3DB5D1189722BF9C4C859E247BBE4CB550654A7D8F09631E54BA45BEE3BDFA3F638EC5B3688E7ACEE0C3C913CC1F5
Оно как не крути непростое и отрицательное.
И своей прогой и вашим кодом дешефрует одинокого.
Код:
procedure RSAkeyDecode(var raw);
var
  ab: array[0..127] of Byte absolute raw;
  i:  Word;
  b:  Byte;
begin
  for i:=0 to $3f do ab[$40+i]:=ab[$40+i] xor ab[i];
  for i:=0 to $03 do ab[$0d+i]:=ab[$0d+i] xor ab[$34+i];
  for i:=0 to $3f do ab[i]:=ab[i] xor ab[$40+i];
  for i:=0 to $03 do begin
    b:=ab[i];
    ab[i]:=ab[$4d+i];
    ab[$4d+i]:=b;
  end;
//showmessage('');
end;

procedure bfh(x:string; x2:string; var b:bb);
var i,l,ii:integer;
    s,ss:string;
begin
l:=length(x);
if length(x) mod 2 <> 0 then x:='0'+x;
i:=0;
ii:=0;
while i<=l-1 do
begin
ss:='0x'+x[i+1]+x[i+2];
b[ii]:= StrToInt64(ss);
inc(ii);
i:=i+2;
end;

l:=length(x2);
i:=0;
while i<=l-1 do
begin
ss:='0x'+x2[i+1]+x2[i+2];
b[ii]:= StrToInt64(ss);
inc(ii);
i:=i+2;
end;

end;

procedure hfb(var x:string;var x2:string; b:bb);
var i,l,ii:integer;
    s,ss:string;
    h:integer;
begin

l:=100;
ii:=0;
x:='';
x2:='';
while ii<=l-1 do
begin
h:=b[ii];
s:=inttohex(b[ii],2);
x := x+s;
inc(ii);
end;

l:=128;
while ii<=l-1 do
begin
h:=b[ii];
s:=inttohex(b[ii],2);
x2 := x2+s;
inc(ii);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var b:bb;
ss,ss2:string;
begin
ss:='E4FE76803B525327A1CDDDEC57B4505123A35A65103470BE20042CAA0F77140F70DAC835071E1F5350E9B3A4806642AD90BC2DF9AC9698E1CD7FFF75905A9F6E547CF7CB8B68F9C39855859BE6383A678500813801BD0295D9C0E4F3ED30AFEBBB8FCE61A0C6EFC5610CF800DB887972334A1515F7A010066191F3490166';
ss2:='5E9B';
bfh(ss,ss2,b);
RSAkeyDecode(b);
hfb(ss,ss2,b);
Edit1.Text:=ss;
Edit2.Text:=ss2;
end;
Быть может что-то попортило ключ? Блоу фиш или ксор…
mr_green вне форума   Ответить с цитированием