package body Rot_13 is
function Encrypt (Plaintext : String) return String
is
Cyphertext : String := Plaintext;
C : Integer;
begin
for I in Plaintext'Range loop
C := Character'Pos(Plaintext(I));
case C is
--lowercase letter
when 97..122 =>
Cyphertext(I) := Character'Val((((C-97)+13) mod 26)+97);
--uppercase letter
when 65..90 =>
Cyphertext(I) := Character'Val((((C-65)+13) mod 26)+65);
when others =>
Cyphertext(I) := Plaintext(I);
end case;
end loop;
return Cyphertext;
end Encrypt;
function Encrypt (Plaintext : Interfaces.C.Strings.chars_ptr)
return Interfaces.C.Strings.chars_ptr
is
use Interfaces.C.Strings;
begin
return New_String(Encrypt(Value(Plaintext)));
end Encrypt;
end Rot_13;