uses WinCRT; const C1 = 52845; C2 = 22719; function Encrypt(const S: String; Key: Word): String; var I: byte; begin Result[0] := S[0]; for I := 1 to Length(S) do begin Result[I] := char(byte(S[I]) xor (Key shr 8)); Key := (byte(Result[I]) + Key) * C1 + C2; end; end;
function Decrypt(const S: String; Key: Word): String; var I: byte; begin Result[0] := S[0]; for I := 1 to Length(S) do begin Result[I] := char(byte(S[I]) xor (Key shr 8)); Key := (byte(S[I]) + Key) * C1 + C2; end; end;
var S: string; begin Write('>'); ReadLn(S); S := Encrypt(S,12345); WriteLn(S); S := Decrypt(S,12345); WriteLn(S); end. ////////////////////////////////////////////////////// unit Unit2;
procedure Encrypt( var ss: string ); var l, lac, // string length sp, // ss char pointer cp: integer; // allchar pointer begin l := Length(ss); lac := Length( Allchar ); sp := 1; while sp <= l do begin cp := 1; while (allchar[cp] <> ss[sp]) and ( cp <= lac ) do inc( cp ); if cp > lac then ss[sp]:= '*' else begin ss[sp] := allchar[ lac - cp + 1 ]; //first char result in the last end; inc(sp); end; end;