Написал вариант который должен работать для любого алфавита. Однако должны выполняться условия:
1)размер алфавита - степень двойки;
2)изначальное сообщение и ключ состоят из символов этого алфавита.
С другой стороны, если вам нужен ограниченный алфавит для отображения или хранения в базе то можно приводить к нему уже зашифрованный текст.