列混合操作是在有限域 G F ( 2 8 ) GF(2^8) GF(28) 上的矩阵乘法,将状态矩阵的每一列与一个固定的矩阵相乘。
4.1.4 轮密钥加
轮密钥加操作将状态矩阵与轮密钥进行异或运算。
4.1.5 数学公式
设 S S S 为状态矩阵, K K K 为轮密钥, S ′ S' S′ 为加密后的状态矩阵,则轮密钥加操作可以表示为:
S ′ = S ⊕ K S' = S \oplus K S′=S⊕K
其中 ⊕ \oplus ⊕ 表示异或运算。
4.1.6 举例说明
假设状态矩阵 S S S 为:
S = [ 0 x 01 0 x 02 0 x 03 0 x 04 0 x 05 0 x 06 0 x 07 0 x 08 0 x 09 0 x 0 A 0 x 0 B 0 x 0 C 0 x 0 D 0 x 0 E 0 x 0 F 0 x 10 ] S = \begin{bmatrix} 0x01 & 0x02 & 0x03 & 0x04 \\ 0x05 & 0x06 & 0x07 & 0x08 \\ 0x09 & 0x0A & 0x0B & 0x0C \\ 0x0D & 0x0E & 0x0F & 0x10 \end{bmatrix} S= 0x010x050x090x0D0x020x060x0A0x0E0x030x070x0B0x0F0x040x080x0C0x10
轮密钥 K K K 为:
K = [ 0 x 11 0 x 12 0 x 13 0 x 14 0 x 15 0 x 16 0 x 17 0 x 18 0 x 19 0 x 1 A 0 x 1 B 0 x 1 C 0 x 1 D 0 x 1 E 0 x 1 F 0 x 20 ] K = \begin{bmatrix} 0x11 & 0x12 & 0x13 & 0x14 \\ 0x15 & 0x16 & 0x17 & 0x18 \\ 0x19 & 0x1A & 0x1B & 0x1C \\ 0x1D & 0x1E & 0x1F & 0x20 \end{bmatrix} K= 0x110x150x190x1D0x120x160x1A0x1E0x130x170x1B0x1F0x140x180x1C0x20
则加密后的状态矩阵 S ′ S' S′ 为:
$$
S’ =
\begin{bmatrix}
0x01 \oplus 0x11 & 0x02 \oplus 0x12 & 0x03 \oplus 0x13 & 0x04 \oplus 0x14 \
0x05 \oplus 0x15 & 0x06 \oplus 0x16 & 0x07 \oplus 0x17 & 0x08 \oplus 0x18 \
0x09 \oplus 0x19 & 0x0A \oplus 0x1A & 0x0B \oplus 0x1B & 0x0C \oplus 0x1C \
0x0D \oplus 0x1D & 0x0E \oplus 0x1E & 0x0F \oplus 0x1F & 0x10 \oplus 0x20
\end{bmatrix}
选择 e = 3 e = 3 e=3,因为 gcd ( 3 , 20 ) = 1 \gcd(3, 20) = 1 gcd(3,20)=1。
计算 d d d,使得 d × e ≡ 1 ( m o d φ ( n ) ) d \times e \equiv 1 \pmod{\varphi(n)} d×e≡1(modφ(n)),即 d × 3 ≡ 1 ( m o d 20 ) d \times 3 \equiv 1 \pmod{20} d×3≡1(mod20),解得 d = 7 d = 7 d=7。
公钥为 ( e = 3 , n = 33 ) (e = 3, n = 33) (e=3,n=33),私钥为 ( d = 7 , n = 33 ) (d = 7, n = 33) (d=7,n=33)。
假设明文 m = 5 m = 5 m=5,则密文 c c c 为:
c = m e ( m o d n ) = 5 3 ( m o d 33 ) = 125 ( m o d 33 ) = 26 c = m^e \pmod{n} = 5^3 \pmod{33} = 125 \pmod{33} = 26 c=me(modn)=53(mod33)=125(mod33)=26
解密时,明文 m m m 为:
m = c d ( m o d n ) = 2 6 7 ( m o d 33 ) = 8031810176 ( m o d 33 ) = 5 m = c^d \pmod{n} = 26^7 \pmod{33} = 8031810176 \pmod{33} = 5 m=cd(modn)=267(mod33)=8031810176(mod33)=5
4.3 哈希算法 - SHA-256的数学模型