Permutation

如果您迭代加密排列足夠長的時間,您會將輸入映射到自身嗎?

  • March 8, 2020

給定一個密碼排列 $ {0,1}^n \rightarrow {0,1}^n $ 是否遵循一定次數的迭代後,您最終必須將輸入映射到自身?

讓我們在kub0x 的數學解釋之上加入一個外行的解釋。

您不能在兩個元素之間進行映射,其中一個元素在任何迭代中都曾被訪問過。因為顯然另一個元素已經映射到它,並且在排列中,您不能將兩個起始值映射到相同的目標值。此規則的唯一例外是您開始使用的一個元素。如果你映射到那個,那麼你已經創建了一個循環並映射回來。

當然,您也可以映射到您以前沒有訪問過的元素。但是,現在您剛剛增加了之前訪問過的元素的數量,並且您處於相同的情況:要麼通過映射到起始元素來關閉循環,要麼在已訪問的元素數量上加已經去過了。你只能不斷成長,直到你擁有 $ 2^n $ 元素,在這之後你創造了最大的循環,然後你回到起始位置。

您可以對任何起始位置執行此操作。這意味著任何排列都由一個或多個循環組成,並且任何元素都只是一個這樣的循環的一部分。你回到起始位置的速度取決於你所處的循環的大小。如果你有最大值 $ n $ 循環然後您將一步到達起始位置:排列是恆等函式,其中 $ f(x) = x $ - 相當於給一個數字加零。

一個排列 $ \sigma $ 上 $ n $ 符號是雙射映射 $ X \mapsto X $ 表示為 $ r $ 不相交的循環,其中 $ X=(1,\cdots,n) $ .

這是 $ \sigma = c_1 \cdots c_r $ 在哪裡 $ \sum_{i=1}^{r} \vert c_i \vert = n $ . 所以它可能會發生,即你的價值 $ x \in X $ 映射到自身之後 $ \vert c_1 \vert $ 迭代,如果符號 $ x $ 在於 $ c_1 $ . 你不需要迭代 $ k $ 時代 $ k $ 是排列順序,這是, $ f^k(x)=x $ 沒有必要的時候 $ \sigma $ 是一個組成 $ r>1 $ 循環。這裡 $ k = lcm(\vert c_1 \vert, \cdots, \vert c_r \vert) $ .

在這種情況下 $ r=1 $ 這是,如果 $ \sigma $ 是一個排列 $ n $ 符號只是一個 $ n $ -然後循環 $ f^n(x)=x $ .

引用自:https://crypto.stackexchange.com/questions/77970