Sha-3

SHA3 左右編碼函式

  • November 22, 2019

這篇論文(Section 2.3.1, Pg.5)中,我遇到了left_encodeandright_encode函式,我對函式有一些疑問:

  1. base256整數的編碼是什麼意思?
  2. 做 $ x_1,x_2,\ldots,x_n $ 都包含相同的字節,還是它們包含不同的字節?
  3. 是否enc8實際上意味著小端?
  4. 連接字節後enc8,它們是轉換回數字還是二進制還是……?
  1. 整數的 base256 編碼是什麼意思?

它拆分一個整數 $ x $ 成字節,一個字節是8位,可以表示256個數字。這就是為什麼實際上 $ n $ 設置為滿足的最小正整數 $ 2^{8n} > x $ . 字節是小端編碼的。

  1. 做 $ x_1,x_2,\ldots, x_n $ 都包含相同的字節,還是它們包含不同的字節?

不, x 被分成字節。

  1. enc8 是否有效地表示大端?

一個字節沒有 little-endian 或 big-endian 編碼。在這裡,它只是一個字節編碼,但相反。第二步做小端。最後,所有位都反轉了。請參閱下面的更大範例。

  1. 在連接 enc8 字節後,它們是轉換回數字還是二進制還是……?

它是一個字節數組,通常在加密實現中,程式程式碼使用字節數組進行處理。散列函式的輸出將是字節到。轉換為十六進製或 base64 取決於您。


來自cryptologie.net的一個很好的例子

左編碼:

           0001 0000 | 0011 0001 | 0111 1110 input
           0111 1110 | 1000 1100 | 0000 1000 value reversed
1100 0000 | 0111 1110 | 1000 1100 | 0000 1000 length encoded. the size 3 in reverse

右編碼:

0001 0000 | 0011 0001 | 0111 1110               input
0111 1110 | 1000 1100 | 0000 1000               value reversed
0111 1110 | 1000 1100 | 0000 1000 | 1100 0000   length encoded

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