Otóż szukałem, szukałem i natrafiłem (chyba) na najprostszy z nich, nazywa się VMPC. Niestety nawet tak prosty, jest dla mnie za trudny. Znalazłem na wikipedii (tutaj) artykuł o tym, i nawet jego zapis.
1. n = 0
2. Powtarzaj kroki 3-6 L razy:
3. s = P[ (s + P[n]) mod 256 ]
4. Output = P[ (P[P[s]]+1) mod 256 ]
5. Temp = P[n]
P[n] = P[s]
P[s] = Temp
6. n = (n + 1) mod 256
Niby coś tam naskrobałem w delphi, ale coś nie działa.
function VMPC(aStr: String): String;
var I, N, L, S: Integer; Temp: Char;
P: String;
begin
N := 0;
L := Length(aStr);
P := aStr;
for I := 1 to L do
begin
S := Ord( P[ ( S + Ord(P[N]) ) mod 256 ] );
Result := Result + P[ ( Ord(P[ Ord(P[S]) ]) + 1 ) mod 256 ];
Temp := P[N];
P[N] := P[S];
P[S] := Temp;
N := (N + 1) mod 256
end;
end;
Dodałem trochę funkcji bo się typy nie zgadzały. Fajnie by było gdyby ktoś to poprawił (w c, php, c++, java, obojętnie).