Для традиционного Цезаря Сайфера вы бы проверили, что символ находится в диапазоне [az] или [AZ], и просто передали бы его в противном случае.
Альтернативой является обработка всех символов в одном и том жеКстати, не только a становится b, но µ становится ¶, и вы переходите на U + 10FFFF (самая высокая кодовая точка в Unicode) становится U + 0000 (первый - не символ, а второй - нулевой символ, но естьнет причины, по которой string
не может удерживать их для передачи в другое место.
Между этими двумя действиями нужно действовать по UTF-16. То есть вы просто добавляете 1 к значению каждогоchar
, и оберните U + FFFF до U + 0000. Вывод может стать недопустимой строкой UTF-16 (потому что она может иметь несоответствующие суррогаты , но это не помешает вам пройтиэто примерно в string
, а затем снова расшифровывает его. В конце концов, современное шифрование также не приводит к действительным строкам.