Algorithm-Design

如何將位矩陣與另一個矩陣相乘?

  • May 24, 2016

例如,假設我有兩個 4x4 位矩陣:

1 1 1 1       1 1 1 0

0 0 0 0       0 1 1 1

1 0 0 1       1 0 1 1

0 1 1 1       1 0 1 0

我想對修改後的 IDEA(國際數據加密算法)應用矩陣乘法。如何將一個位矩陣與另一個位矩陣相乘?

位矩陣的乘法就像數字矩陣的乘法一樣工作,除了加法規則被修改為: $ 1+1\mapsto 0 $ .

讓 $ U $ (分別。 $ V $ ) 是一個方陣 $ n\times n $ 指出的元素 $ u_{l,c} $ (分別。 $ v_{l,c} $ ) 和 $ 1\le l\le n $ 和 $ 1\le c\le n $ . 產品 $ U\cdot V $ 是一個方陣 $ W $ 的 $ n\times n $ 指出的元素 $ w_{l,c} $ , 和 $ w_{l,c}=\sum_{j=1}^n u_{l,j}\cdot v_{j,c} $

在手頭的問題中, $ n=4 $ . 為了計算結果中(比如說)第三行和第一列的位,我們將使用上面的公式 $ l=3 $ 和 $ c=1 $ , 給 $ w_{3,1}=\sum_{j=1}^4 u_{3,j}\cdot v_{j,1} $ , 那是 $ w_{3,1}=(u_{3,1}\cdot v_{1,1})+(u_{3,2}\cdot v_{2,1})+(u_{3,3}\cdot v_{3,1})+(u_{3,4}\cdot v_{4,1}) $ . 左矩陣的第三行給出 $ u_{3,1}=1 $ , $ u_{3,2}=0 $ , $ u_{3,3}=0 $ , $ u_{3,4}=1 $ . 右矩陣的第一列給出 $ v_{1,1}=1 $ , $ v_{2,1}=0 $ , $ v_{3,1}=1 $ , $ v_{4,1}=1 $ . 因此 $ w_{3,1}=(1\cdot1)+(0\cdot0)+(0\cdot1)+(1\cdot1) $ . 這簡化為 $ w_{3,1}=1+0+0+1 $ , 然後 $ w_{3,1}=0 $ .

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