Дельфяка рядом нет, так что на глаз меня смущают разницы в строках
Код:
sh:=chr(100+(ord(sl)-97+ord(kl)-97)mod(26));
...
rassl:=chr(94+(ord(sh)-97+ord(kl)-97)mod(26));
Это раз. Во-вторых в цезаре при расшифровке вычитание, у тебя опять сложение. В-третьих написал бы строку разрешённых символов и работал бы с ней, как с алфавитом (чем не кольцо?), меньше бы проблем имел
