Function Base22Encoder(Chaine : String) : String;
Const
Code22 = 'ABCDEFGHJKLMNPQRSTUWXY';
Var
Base10, i, k, Temp, Mul, Modu, Posi : Integer;
Base22 : String;
Begin
Base10 := 0;
For i := 1 to Length(Chaine) Do
Begin
If Pos(Chaine[i],Code22) <> 0 Then
Base10 := Base10 + Pos(Chaine[i],Code22)-1;
End;
Base22 := '';
Modu := (Base10 Mod 22);
For i := 1 to Length(Chaine) Do
Begin
Mul := i * Modu;
k := (Modu * Modu) + Round(Mul * 3.259);
Posi := Pos(Chaine[i],Code22);
If Posi = 0 then Posi := 1;
Temp := Posi - 1 - k;
If Temp > 0 then Temp := Temp Mod 22;
While Temp < 0 Do Temp := Temp + 22;
Base22 := Base22 + Code22[Temp+1];
End;
result := Base22;
End;