Показать сообщение отдельно
  #10  
Старый 21.06.2010, 13:55
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Код:
var
  i,x,y,NP:integer;
  b:integer;
  Hash: int64;
  HashS,s:string;
............................

s:=edPassword.Text;
Hash:=0;

    for i:=1 to Length(s) do
      Hash:=Hash+ord(s[i])*i;

    HashS:=BaseConvert(IntToStr(Hash),10,2);
    if HashS='' then HashS:='0';

    while Length(HashS)<Length(data) do HashS:=HashS+HashS;

    for i:=0 to Length(data)-1 do 
    begin
      N:=(HashS[i+1]='1');
      Data[i]:=Data[i] xor N;
    end;

Судя с этого куска кода
ключ преобразовывается в число инт64, но

Max значение int64 = 9223372036854775807 (19 цифр)

таким образом при любом пароле значение Hash будет в пределах от 0 до макс значения.
И длиной не более 19 чисел.


Никакого даже намека на стойкость тут нету...
Ответить с цитированием