Не ясно, в чем реальная проблема. Код выглядит как проблема шифра Цезаря, но вы просите вернуться к форме от z до a. если вы удалите строку
decryption = ((char)decryption % 26);
, вы приблизитесь к расшифровке сообщения, потому что я думаю, что вы выбираете shift = 1 для шифрования своих сообщений. Я предполагаю, что вы запрашиваете зацикливание формы z на a из-за определения cesar cipher в википедии
Если мое предположение верно, проблема в том, что числовое представление char не ' a '= 0,' b '= 1 и т. д., но' A 'имеет числовое представление c, равное 65, и' a ', равное 97. Вы сдвигаете неправильное число.