Прежде всего, моноалфавитным шифром замены может быть концепция моноалфавитной замены или шифрование только с использованием этого метода. Это означает, что Ceaser является одноалфавитной заменой, потому что использует это понятие. Отличие от «настоящей» одноалфавитной замены в том, что генерация ключа не является полностью случайной.
лично я бы не определил $\mathcal{M}, \mathcal{C}, \mathcal{K}$ так, как вы это сделали, потому что я думаю, что это недостаточно ясно. Более математическое определение могло бы быть лучше:
- $\mathcal{M} = \{ a,b,c,...,z\}^*$ и $\mathcal{C} = \{ a,b,c,...,z\}^*$
Я также хочу избежать $\mathcal{M} = \mathcal{C}$ потому что это может быть математически правильно, но может означать неправильное понимание для читателя. Я выбрал $\{ а,б,в,...,г\}^*$, потому что обычно пространство сообщений $\{0,1\}^*$ и я адаптировал это к данному контексту.
Теперь я думаю, что вы не можете определить $\mathcal{K} = S_{26}$. Что $S$? я бы определил $\mathcal{K} = \{f_k\mid k \in \{a,...,z\}\}$, куда $f_k$ является биективной функцией замены.
Шифрование и дешифрование выглядит хорошо. Я бы сделал это так для сообщения $m = m_1, ... m_n \in \mathcal{M}$:
- $Enc_k(м)$: $c_i = f_{m_i}(m_i)\forall i \in \{1,...,n\}$
- $Dec_k(c)$: $m_i = f^{-1}_{c_i}(c_i) \forall i \in \{1,...,n\}$
Генерация может быть определена как:
- $Gen$: выбрать случайную замену $f_k$ для каждого $k \in \{a,...,z\}$, так что $f^{-1}_k$ биективная обратная функция