Contributor: LUDOVIC RUSSO


{
Ludovic RUSSO offers you :
One recursive encrypt-decrypt program. Only the first char doesn't
change.
Because of the recursivity, the same char is *never* crpyted the same
way
(take a look at the points in the sentence)
}
 
PROGRAM RecursiveCrypt;
 
TYPE  str80=string[80];
 
PROCEDURE Crypt(var mess:str80;lg:integer);
BEGIN
  If lg>1 Then
  Begin
    crypt(mess,lg-1);
    mess[lg]:=chr((ord(mess[lg-1])+ord(mess[lg])) mod 256);
  End;
END;
 
PROCEDURE DeCrypt(var mess:str80;lg:integer);
BEGIN
  If lg>=2 Then
  Begin
    mess[lg]:=chr((ord(mess[lg])-ord(mess[lg-1])+256) mod 256);
    decrypt(mess,lg-1);
  End;
END;
 
VAR w:str80;
BEGIN
  w:='You can join me at lrusso@ice.unice.fr';
  crypt(w,length(w));writeln('Crypted word   : ',w);
  decrypt(w,length(w));writeln('Uncrypted word : ',w);
END.