S-Boxes
使用查找表實現 sbox 組件
是否可以使用 lookup_tables 來實現 SBOX 表的組件。例如,對於 4 位 SBOX,可以通過以下方式使用 SAGE 獲取組件 3
sage: from sage.crypto.sbox import SBox sage: S = SBox([7,6,0,4,2,5,1,3]) sage: f3 = S.component_function(3) sage: f3.algebraic_normal_form() x0*x1 + x0*x2 + x0 + x2
但我需要多次使用該組件(石灰 $ 2^{20} $ ),並且 SAGE 中的布爾函式具有替換功能非常慢。比我認為使用查找表更好。
你是對的。Sage 返回的組件的布爾表達式不是為了有效評估,而是為了幫助密碼的代數分析(例如,作為將輪函式或密鑰調度的位表示為多項式表達式併計算其次數的一部分)。
如果您確實想為大量輸入收集有關組件函式的數據,那麼您又是對的,查找表的預計算效率更高。
f3
在您的程式碼中是一個布爾函式,它基本上是一個真/假值的列表。list(f3) [False, True, False, False, True, True, True, False]