Лови первую помидорку!
Нет смысла делать операции XOR над char типом данных.
newMassage[x] = (char)(newMassage[x] ^ dayKey);
В криптографии если ты решил серъезно играть - то надо весь открытый текст перевести в byte array
(здесь как раз появляется понятие кодовая страница) и потом применить XOR к этому байтовому массиву.
Для печати на экране байт-масив переводят либо в binhex, либо в base64.
Для дешифрования - соотв. надо сделать обратный цикл. Из binhex в байтовый массив. Потом из него XOR и потом - национальная кодовая страница.