Показать сообщение отдельно
  #11  
Старый 11.07.2017, 14:49
Shaft Shaft вне форума
Новичок
 
Регистрация: 15.05.2013
Сообщения: 74
Версия Delphi: 7/10.4
Репутация: 12
По умолчанию

Мой код допиленый по примеру Alegun, расшифровывает весь файл целиком вместе с системной частью.
Код:
function Encrypt_(s:string; EncodeTable:array of Integer):string;
var
  i,KeyL:Integer;
begin
  Result:='';
  KeyL:=0;
  for i:=1 to Length(s) do
  begin
    if KeyL>2 then KeyL:=0;
    Result:=Result+Char(Ord(s[i])+EncodeTable[KeyL]);
    Inc(KeyL);
  end;
end;

function Encrypt(s:string):string;
const Key1:array[0..2] of Integer=(1,2,0);
      Key2:array[0..2] of Integer=(2,3,1);
      Key3:array[0..2] of Integer=(3,4,2);
begin
  Result:='';
  if Length(s)<4 then Exit;
  if (s[1] = ')') or (s[4] = ',') then Result:=Encrypt_(s,Key1);
  if s[4]='+' then Result:=Encrypt_(s,Key2);
  if s[4]='*' then Result:=Encrypt_(s,Key3);
end;

procedure StartDecode;
var
  sl:TStringList;
  I:Integer;
begin
  sl:=TStringList.Create;
  sl.LoadFromFile('icon6@.bmp');
  for I:=0 to sl.Count-1 do
    mmo1.Lines.Add(Encrypt(sl[i]));
  sl.Free;
end;
Чтобы обратно зашифровать нужно в функции Encrypt_ сложение заменить на вычитание.
P.S. Пробовал Рандеву с незнакомкой 9, тоже работает, судя по всему во всех частях один и тот же ключ и алгоритм.
Ответить с цитированием