Implementation

RC6 規範中 base2 對數的概念

  • March 20, 2022

我正在閱讀這篇關於 RC6的論文,並且正式地,該算法是為任意字長定義的 $ w $ , 即使只有 $ w=32 $ 被考慮用於 AES 送出。現在論文明確提到了選擇 $ w=24 $ ,等等。後來在論文中,它說:

“以二為底的對數 $ w $ 將表示為 $ \operatorname{lg}w $ 。”

作為加密常式的一部分,執行以下步驟: $$ t = (B\times(2B+1)) \lll \operatorname{lg} w $$ 這對於 $ w=32 $ 作為 $ 32 $ 是二的冪並且 $ \operatorname{lg} w $ 將是一個整數,您可以通過它旋轉另一個整數。然而,對於 $ w=24 $ ,這正式要求我將值旋轉大約 $ 4.584962500721156 $ 位,我覺得相當令人費解。

我的問題是:什麼是正確的解釋 $ \operatorname{lg} w $ 對於允許其他值的 RC6 的實現 $ w $ , 特別是當 $ w $ 不是二的冪嗎*?*

來自多個塊大小的 RC6 和 RC5 測試向量(draft-krovetz-rc6-rc5-vectors-00)

/* Calculate floor(base-2 log of x) for any x>0.                   */
static int lg2(int x) {
   int ans=0;
   for ( ; x!=1; x>>=1)
       ans++;
   return ans;
}

所以返回的是整數部分的LSB;

log_w = (unsigned int)log2(w);

在這裡測試一下,

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