Известен прием используемый в некоторых алгоритмах шифрования (алгоритмы замены) где для каждого i-элемента множества мощности n генерируется перестановка по формуле

(здесь mod(m,n) означает остаток деления m на n
Когда используется линейное преобразование нет проблем с обратимостью (декодированием). Но стоит только повысить степень полинома выше 1 - начинаются проблемы. Образы некоторых элементов "склеиваются", нарушается иньективность отображения.
Мой вопрос в следующем -
какие можно сформулировать требования к полиномам
чтобы отображение
было перестановкой ?(инъективным, биективным ). Мне кажется здесь есть некоторая аналогия с циклическими группами
Прошу меня заранее извинить за будущую пассивность в обсуждении темы в будущем, в связи с моим отъездом с 01.05 по 10.05 в место где нет интернета