Код:
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 чисел.
Никакого даже намека на стойкость тут нету...