Keccak 中的排列是什麼?
我試圖了解乙太坊的雜湊算法 Keccak。Keccak 在散列過程中使用排列。誰能解釋一下這個排列是什麼樣子或者它是如何工作的?我只知道數學的排列,這裡也一樣嗎?“abc”的一個排列是: abc, acb, cab, bac, bca, cba 在 Keccak 中應用相同的邏輯嗎?
我只知道數學的排列,這裡也一樣嗎?“abc”的一個排列是: abc, acb, cab, bac, bca, cba 在 Keccak 中應用相同的邏輯嗎?
在這裡發揮作用的“排列”一詞的含義略有不同。維基百科條目的第一句話涉及到這一點:
在數學中,置換的概念涉及將集合的所有成員排列成某種序列或順序的行為,或者如果集合已經排序,則重新排列(重新排序)其元素,這個過程稱為置換。
在您的範例中,該集合是 $ {a, b, c} $ ,並且它已經被訂購為 $ abc $ ,所以那些其他字元串是集合和字元串的排列。
在密碼學中,當我們談論排列時,通常我們談論的是一些固定長度的二進製字元串集(符號: $ {0,1}^n $ ) 並且排列是一個雙射函式,它既設置為域又設置為餘域。這與抽象代數中使用該術語的含義相同:
在代數中,特別是在群論中,集合的排列 $ S $ 被定義為從 $ S $ 對自己。也就是說,它是一個函式 $ S $ 至 $ S $ 每個元素作為圖像值僅出現一次。這與元素的重新排列有關 $ S $ 其中每個元素 $ s $ 被對應的替換 $ f(s) $ .
或者,由於集合的元素 $ {0,1}^n $ 可以讀取為數字,您可以將其讀取為提供集合的隱式規範排序,其中第一個元素是零的數字,第二個元素是一的數字,依此類推。在這種情況下,排列可以寫成集合中所有數字的不重複序列,使得 $ i $ 集合的規範排序中的第一個元素被替換為 $ i $ 表示排列的序列的第 th 個元素。
因此,Keccak 的規範定義了某些排列,它們只是固定長度的二進製字元串上的一些標準化函式(規範定義了幾種長度,但最常見的是 1600 位字元串)。這些函式旨在盡可能地表現得像從同一集合的所有可能排列的集合中隨機選擇的排列,但要有效地計算。但是,推理 Keccak 是如何工作的一種方法是假裝這個排列真的是一個隨機選擇的排列。同樣,如果我們將 Keccak 置換操作的集合中的位串視為二進制數字,則該函式所做的是,給定其中任何一個作為輸入,計算它將在隨機打亂的集合中佔據的位置。