Encryption

ROTL 是如何工作的?

  • December 31, 2018
  1. ROTL 代表什麼?我知道它會左移,但首字母縮略詞呢?
  2. 當我們進行左移時,我們是否會取最左邊的位並將其添加到末尾,通過使第二位為第一位,第三位為第二位……而第一個位為最後一位?或者,我們刪除第一位,並在末尾添加一個 0?DES 密鑰生成和 SHA-1 算法中使用了左移。

在電腦科學和加密的實現中,ROTL 代表 ROTate Left。ROTL 也稱為 ROL,或 RLNC,表示左移無進位。

Cburnett 的“通過進位向左旋轉” - 通過 Wikimedia Commons 在 CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/) 下獲得許可

在一個 $ w $ -bit 字,位編號從 $ 0 $ , 位數 $ j $ ROTL的輸入與移位計數 $ n $ 去咬 $ j+n\bmod w $ 結果; $ n=1 $ 除非另有說明(並且是某些硬體上唯一可用的值)。

古老的VAX有一條ROTL 指令。最近的ST40也有。大多數現代 CPU 都有某個名稱,有時(例如 ARM)間接地通過使用 count 進行右移 $ -n\bmod w $ . 關於 ROTL 後進位位的狀態或等效(與位相同),您的米數可能因 CPU 品牌而異 $ 0 $ 結果,不變..),根據移位計數是否為模,有額外的扭曲 $ w $ 是 $ 0 $ 或不。

從 C 或 C++ 語言的舒適度來看,ROTL 的結果 $ w $ -位無符號值 $ x $ 經過 $ n $ 位與 $ 0<n<w $ (有時還有其他 $ n $ ) 是x&lt;&lt;n | x&gt;&gt;(w-n),一些編譯器甚至設法辨識該習語並在有內置 CPU 指令時使用(通常用於 $ w $ 兩個的一些力量 $ 2^3 $ 到 $ 2^6 $ ) 並且行星的排列是有利的適當選擇並且滿足周圍條件,通常包括 $ w $ 和 $ n $ 是常數;在其他一些上,有一個編譯器內在函式,其名稱如__i64_rotl, __lrotl,__rotl , _rotl16,_rotl8等。

常數旋轉在密碼原語中非常常見,通常與加法相結合 $ \pmod{2^w} $ 和異等按位運算符,以加速擴散,並首先創建它以將左位擴散到右位。範例包括 SHA-1 和 SHA-256 等雜湊(大量使用 $ w=32 $ 位旋轉)和 SHA-512( $ 64 $ -位旋轉);和一些像SerpentSalsa-20這樣的密碼。DES 中出現了不同的用法

,其中兩個旋轉 $ w=28 $ -位寄存器用於密鑰調度;在那裡,目的是改變哪個位被饋送到 S-Box 輸入。

一些密碼,特別是RC5,使用依賴於數據的計數進行輪換,這具有一些優點(以及實現的缺點,包括在某些低端 CPU 上的極度緩慢,並且至少可以想像通過依賴於數據的時序進行攻擊)。

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