【商密测评】SM4分组密码算法完整计算过程

admin 2026-03-27 02:06:27 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细解析了国密SM4分组密码算法的完整计算过程,依据GB/T32907-2016国家标准,对密钥扩展和加密两大核心环节进行了深入浅出的分析。文中不仅定义了算法的基本参数与符号,还通过具体示例展示了如何从初始密钥计算出32个轮密钥,并最终完成明文的加密迭代。内容严谨且易于理解,是掌握SM4算法工作原理的实用指南。 综合评分: 85 文章分类: 技术标准,解决方案,应用安全,网络安全,数据安全


cover_image

【商密测评】SM4 分组密码算法完整计算过程

原创

利刃信安 利刃信安

利刃信安

2026年3月21日 12:11 北京

SM4 分组密码算法完整计算过程

依据标准: GB/T 32907-2016《信息安全技术 SM4分组密码算法》

验证状态: ✅ 全部验证通过


一、算法概述

1.1 标准定义

根据GB/T 32907-2016国家标准:

SM4密码算法是一个分组算法。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法均采用非线性迭代结构,运算轮数均为32轮。数据解密和数据加密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

1.2 基本参数

| 参数 | 值 | 说明 | | — | — | — | | 分组长度 | 128比特(16字节) | 每次加密的数据块大小 | | 密钥长度 | 128比特(16字节) | 加密密钥的长度 | | 轮数 | 32轮 | 迭代加密的次数 | | 字长 | 32比特 | 算法基本运算单位 |

1.3 符号定义(国标第3章)

| 符号 | 含义 | | — | — | | ⊕ | 32位异或 | | <<<i | 32位循环左移i位 | | Z₂ⁿ | 比特长度为n的二进制序列集合 |


二、SM4 密钥扩展算法详细分析

2.1 输入密钥(第5-10行)

原文内容:

【输入密钥】
&nbsp; MK = (MK0, MK1, MK2, MK3)
&nbsp; MK0 = 0x5C62DA45
&nbsp; MK1 = 0xB0B2ACF9
&nbsp; MK2 = 0xF3DA5DB9
&nbsp; MK3 = 0x3D18CAFD

国标对应: 根据国标第5章,密钥长度为128比特,表示为MK=(MK0,MK1,MK2,MK3),其中MKi(i=0,1,2,3)为字。

分析:

  • • 输入密钥为4个32位字,共128位
  • • 每个MKi是一个独立的32位字
  • • 完整密钥十六进制表示: 5C62DA45B0B2ACF9F3DA5DB93D18CAFD

验证结果: ✅ 格式正确,符合国标定义

2.2 步骤1:计算初始密钥 K(第12-14行)

原文内容:

步骤1: 计算初始密钥 K

国标对应: 国标公式(6)

(K0,K1,K2,K3) = (MK0⊕FK0, MK1⊕FK1, MK2⊕FK2, MK3⊕FK3)

系统参数FK(国标7.3节):

| 分量 | 值 | | — | — | | FK₀ | 0xA3B1BAC6 | | FK₁ | 0x56AA3350 | | FK₂ | 0x677D9197 | | FK₃ | 0xB27022DC |

计算过程:

K₀ = MK₀ ⊕ FK₀ = 0x5C62DA45 ⊕ 0xA3B1BAC6 = 0xFFD36083
K₁ = MK₁ ⊕ FK₁ = 0xB0B2ACF9 ⊕ 0x56AA3350 = 0xE6189FA9
K₂ = MK₂ ⊕ FK₂ = 0xF3DA5DB9 ⊕ 0x677D9197 = 0x94A7CC2E
K₃ = MK₃ ⊕ FK₃ = 0x3D18CAFD ⊕ 0xB27022DC = 0x8F68E821

验证结果: ✅ 计算正确

2.3 步骤2:计算32个轮密钥(第16-33行)

原文内容:

步骤2: 计算32个轮密钥 rk[0] ~ rk[31]
&nbsp; 公式: rk[i] = Ki ⊕ T'(Ki+1 ⊕ Ki+2 ⊕ Ki+3 ⊕ CKi)

国标对应: 国标公式(7)

rki = Ki+4 = Ki ⊕ T'(Ki+1 ⊕ Ki+2 ⊕ Ki+3 ⊕ CKi), i=0,1,...,31

合成置换T’定义(国标7.3节):

T’是将合成置换T的线性变换L替换为L’:

T'(A) = L'(τ(A))

线性变换L’(国标公式(8)):

L'(B) = B ⊕ (B <<< 13) ⊕ (B <<< 23)

固定参数CK(国标7.3节):

设cki,j为CKi的第j字节(i=0,1,…,31;j=0,1,2,3),则:

cki,j = (4i+j)×7 (mod 256)

CK完整取值:

CK[0] &nbsp;= 00070E15 &nbsp; &nbsp;CK[8] &nbsp;= E0E7EEF5 &nbsp; &nbsp;CK[16] = C0C7CED5 &nbsp; &nbsp;CK[24] = A0A7AEB5
CK[1] &nbsp;= 1C232A31 &nbsp; &nbsp;CK[9] &nbsp;= FC030A11 &nbsp; &nbsp;CK[17] = DCE3EAF1 &nbsp; &nbsp;CK[25] = BCC3CAD1
CK[2] &nbsp;= 383F464D &nbsp; &nbsp;CK[10] = 181F262D &nbsp; &nbsp;CK[18] = F8FF060D &nbsp; &nbsp;CK[26] = D8DFE6ED
CK[3] &nbsp;= 545B6269 &nbsp; &nbsp;CK[11] = 343B4249 &nbsp; &nbsp;CK[19] = 141B2229 &nbsp; &nbsp;CK[27] = F4FB0209
CK[4] &nbsp;= 70777E85 &nbsp; &nbsp;CK[12] = 50575E65 &nbsp; &nbsp;CK[20] = 30373E45 &nbsp; &nbsp;CK[28] = 10171E25
CK[5] &nbsp;= 8C939AA1 &nbsp; &nbsp;CK[13] = 6C737A81 &nbsp; &nbsp;CK[21] = 4C535A61 &nbsp; &nbsp;CK[29] = 2C333A41
CK[6] &nbsp;= A8AFB6BD &nbsp; &nbsp;CK[14] = 888F969D &nbsp; &nbsp;CK[22] = 686F767D &nbsp; &nbsp;CK[30] = 484F565D
CK[7] &nbsp;= C4CBD2D9 &nbsp; &nbsp;CK[15] = A4ABB2B9 &nbsp; &nbsp;CK[23] = 848B9299 &nbsp; &nbsp;CK[31] = 646B7279

轮密钥计算示例(第1轮):

rk[0] = K₀ ⊕ T'(K₁ ⊕ K₂ ⊕ K₃ ⊕ CK[0])

步骤1: K₁ ⊕ K₂ ⊕ K₃ ⊕ CK[0]
&nbsp; &nbsp; &nbsp;= 0xE6189FA9 ⊕ 0x94A7CC2E ⊕ 0x8F68E821 ⊕ 0x00070E15
&nbsp; &nbsp; &nbsp;= 0xFDD0B5B3

步骤2: τ(0xFDD0B5B3) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0xFD, 0xD0, 0xB5, 0xB3
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xCB, 0x0A, 0xFD, 0x45
&nbsp; &nbsp; &nbsp;τ输出: 0xCB0AFD45

步骤3: L'(0xCB0AFD45)
&nbsp; &nbsp; &nbsp;= 0xCB0AFD45 ⊕ (0xCB0AFD45 <<< 13) ⊕ (0xCB0AFD45 <<< 23)
&nbsp; &nbsp; &nbsp;= 0xCB0AFD45 ⊕ 0x5FA8B961 ⊕ 0xA2E5857E
&nbsp; &nbsp; &nbsp;= 0x3647C15A

步骤4: rk[0] = K₀ ⊕ 0x3647C15A
&nbsp; &nbsp; &nbsp;= 0xFFD36083 ⊕ 0x3647C15A
&nbsp; &nbsp; &nbsp;= 0xC994A1D9

轮密钥汇总表(第25-33行):

| 索引 | 轮密钥值 | 索引 | 轮密钥值 | 索引 | 轮密钥值 | 索引 | 轮密钥值 | | — | — | — | — | — | — | — | — | | rk[0] | C994A1D9 | rk[1] | 8E961DA9 | rk[2] | 3B064726 | rk[3] | DD302728 | | rk[4] | F4B61421 | rk[5] | EDFAD6F1 | rk[6] | 1540513D | rk[7] | C83EBD4D | | rk[8] | E5DE7FA7 | rk[9] | 5AFE4561 | rk[10] | E94A3F7E | rk[11] | C90C33AD | | rk[12] | A8A8DF0B | rk[13] | 26C94B0F | rk[14] | 2348FC7C | rk[15] | 285ED00F | | rk[16] | 17908EE3 | rk[17] | 29B3F5C1 | rk[18] | 61D27218 | rk[19] | A2CDA8E6 | | rk[20] | 4A28ABD4 | rk[21] | 105D3CD5 | rk[22] | B3392991 | rk[23] | A5143E89 | | rk[24] | 9E19AB2C | rk[25] | 16EB5274 | rk[26] | BD46BFDE | rk[27] | 70453A24 | | rk[28] | 11C4BEC2 | rk[29] | 47DB1C0D | rk[30] | 4995756A | rk[31] | E788F4C2 |

验证结果: ✅ 全部32个轮密钥验证通过


三、SM4 加密算法详细分析

3.1 输入明文块(第38-44行)

原文内容:

【输入明文块】
&nbsp; X = (X0, X1, X2, X3)
&nbsp; X0 = 0xE588A9E5
&nbsp; X1 = 0x8883E4BF
&nbsp; X2 = 0xA1E5AE89
&nbsp; X3 = 0x00000000

国标对应: 国标7.1节,明文输入为(X0,X1,X2,X3)∈(Z₂³²)⁴

明文解析:

  • • 原始明文: 利刃信安(UTF-8编码,12字节)
  • • UTF-8编码: E5 88 A9 E5 88 83 E4 BF A1 E5 AE 89
  • • 填充方式: 零填充(4字节0x00)
  • • 填充后: E588A9E58883E4BFA1E5AE8900000000

验证结果: ✅ 明文编码正确

3.2 轮函数 F(国标第6章)

国标定义(公式(1)):

F(X0, X1, X2, X3, rk) = X0 ⊕ T(X1 ⊕ X2 ⊕ X3 ⊕ rk)

合成置换T(国标6.2节):

T由非线性变换τ和线性变换L复合而成:T(.) = L(τ(.))

3.2.1 非线性变换 τ

国标定义(公式(2)):

(b0, b1, b2, b3) = τ(A) = (Sbox(a0), Sbox(a1), Sbox(a2), Sbox(a3))

其中输入A=(a0,a1,a2,a3)∈(Z₂⁸)⁴,输出B=(b0,b1,b2,b3)∈(Z₂⁸)⁴

S盒数据(国标表1):

&nbsp; &nbsp; &nbsp;0 &nbsp;1 &nbsp;2 &nbsp;3 &nbsp;4 &nbsp;5 &nbsp;6 &nbsp;7 &nbsp;8 &nbsp;9 &nbsp;A &nbsp;B &nbsp;C &nbsp;D &nbsp;E &nbsp;F
&nbsp;0 &nbsp;D6 90 E9 FE CC E1 3D B7 16 B6 14 C2 28 FB 2C 05
&nbsp;1 &nbsp;2B 67 9A 76 2A BE 04 C3 AA 44 13 26 49 86 06 99
&nbsp;2 &nbsp;9C 42 50 F4 91 EF 98 7A 33 54 0B 43 ED CF AC 62
&nbsp;3 &nbsp;E4 B3 1C A9 C9 08 E8 95 80 DF 94 FA 75 8F 3F A6
&nbsp;4 &nbsp;47 07 A7 FC F3 73 17 BA 83 59 3C 19 E6 85 4F A8
&nbsp;5 &nbsp;68 6B 81 B2 71 64 DA 8B F8 EB 0F 4B 70 56 9D 35
&nbsp;6 &nbsp;1E 24 0E 5E 63 58 D1 A2 25 22 7C 3B 01 21 78 87
&nbsp;7 &nbsp;D4 00 46 57 9F D3 27 52 4C 36 02 E7 A0 C4 C8 9E
&nbsp;8 &nbsp;EA BF 8A D2 40 C7 38 B5 A3 F7 F2 CE F9 61 15 A1
&nbsp;9 &nbsp;E0 AE 5D A4 9B 34 1A 55 AD 93 32 30 F5 8C B1 E3
&nbsp;A &nbsp;1D F6 E2 2E 82 66 CA 60 C0 29 23 AB 0D 53 4E 6F
&nbsp;B &nbsp;D5 DB 37 45 DE FD 8E 2F 03 FF 6A 72 6D 6C 5B 51
&nbsp;C &nbsp;8D 1B AF 92 BB DD BC 7F 11 D9 5C 41 1F 10 5A D8
&nbsp;D &nbsp;0A C1 31 88 A5 CD 7B BD 2D 74 D0 12 B8 E5 B4 B0
&nbsp;E &nbsp;89 69 97 4A 0C 96 77 7E 65 B9 F1 09 C5 6E C6 84
&nbsp;F &nbsp;18 F0 7D EC 3A DC 4D 20 79 EE 5F 3E D7 CB 39 48

示例: 输入’EF’,则经S盒后的值为表中第E行和第F列的值,Sbox(EF)=84

3.2.2 线性变换 L

国标定义(公式(3)):

C = L(B) = B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)

3.3 32轮迭代加密(第46-53行)

原文内容:

32轮迭代加密
&nbsp; 公式: X[i+4] = X[i] ⊕ T(X[i+1] ⊕ X[i+2] ⊕ X[i+3] ⊕ rk[i])
&nbsp; 第7轮完成: X[11] = 0x0EE01CB1
&nbsp; 第15轮完成: X[19] = 0xBE8BD948
&nbsp; 第23轮完成: X[27] = 0xD5A9247E
&nbsp; 第31轮完成: X[35] = 0xE76B9AA7

国标对应: 国标公式(4)

Xi+4 = F(Xi, Xi+1, Xi+2, Xi+3, rki), i=0,1,...,31

3.3.1 完整32轮迭代详细计算过程

第0轮迭代 (i=0)

输入状态:

X[0] &nbsp; = 0xE588A9E5
X[1] = 0x8883E4BF
X[2] = 0xA1E5AE89
X[3] = 0x00000000

轮密钥: rk[0] = 0xC994A1D9

计算步骤:

步骤1: X[1] ⊕ X[2] ⊕ X[3] ⊕ rk[0]
&nbsp; &nbsp; &nbsp;= 0x8883E4BF ⊕ 0xA1E5AE89 ⊕ 0x00000000 ⊕ 0xC994A1D9
&nbsp; &nbsp; &nbsp;= 0xE0F2EBEF

步骤2: τ(0xE0F2EBEF) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0xE0, 0xF2, 0xEB, 0xEF
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x89, 0x7D, 0x09, 0x84
&nbsp; &nbsp; &nbsp;τ输出: 0x897D0984

步骤3: L(0x897D0984) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x897D0984 ⊕ 0x25F42612 ⊕ 0xF4261225 ⊕ 0x261225F4 ⊕ 0x84897D09
&nbsp; &nbsp; &nbsp;= 0xFA34654E

步骤4: X[0] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xE588A9E5 ⊕ 0xFA34654E
&nbsp; &nbsp; &nbsp;= 0x1FBCCCAB

输出: X[4] = 0x1FBCCCAB


第1轮迭代 (i=1)

输入状态:

X[1] &nbsp; = 0x8883E4BF
X[2] = 0xA1E5AE89
X[3] = 0x00000000
X[4] = 0x1FBCCCAB

轮密钥: rk[1] = 0x8E961DA9

计算步骤:

步骤1: X[2] ⊕ X[3] ⊕ X[4] ⊕ rk[1]
&nbsp; &nbsp; &nbsp;= 0xA1E5AE89 ⊕ 0x00000000 ⊕ 0x1FBCCCAB ⊕ 0x8E961DA9
&nbsp; &nbsp; &nbsp;= 0x30CF7F8B

步骤2: τ(0x30CF7F8B) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x30, 0xCF, 0x7F, 0x8B
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xE4, 0xD8, 0x9E, 0xCE
&nbsp; &nbsp; &nbsp;τ输出: 0xE4D89ECE

步骤3: L(0xE4D89ECE) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xE4D89ECE ⊕ 0x93627B3B ⊕ 0x627B3B93 ⊕ 0x7B3B9362 ⊕ 0xCEE4D89E
&nbsp; &nbsp; &nbsp;= 0xA01E959A

步骤4: X[1] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x8883E4BF ⊕ 0xA01E959A
&nbsp; &nbsp; &nbsp;= 0x289D7125

输出: X[5] = 0x289D7125


第2轮迭代 (i=2)

输入状态:

X[2] &nbsp; = 0xA1E5AE89
X[3] = 0x00000000
X[4] = 0x1FBCCCAB
X[5] = 0x289D7125

轮密钥: rk[2] = 0x3B064726

计算步骤:

步骤1: X[3] ⊕ X[4] ⊕ X[5] ⊕ rk[2]
&nbsp; &nbsp; &nbsp;= 0x00000000 ⊕ 0x1FBCCCAB ⊕ 0x289D7125 ⊕ 0x3B064726
&nbsp; &nbsp; &nbsp;= 0x0C27FAA8

步骤2: τ(0x0C27FAA8) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x0C, 0x27, 0xFA, 0xA8
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x28, 0x7A, 0x5F, 0xC0
&nbsp; &nbsp; &nbsp;τ输出: 0x287A5FC0

步骤3: L(0x287A5FC0) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x287A5FC0 ⊕ 0xA1E97F00 ⊕ 0xE97F00A1 ⊕ 0x7F00A1E9 ⊕ 0xC0287A5F
&nbsp; &nbsp; &nbsp;= 0xDFC4FBD7

步骤4: X[2] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xA1E5AE89 ⊕ 0xDFC4FBD7
&nbsp; &nbsp; &nbsp;= 0x7E21555E

输出: X[6] = 0x7E21555E


第3轮迭代 (i=3)

输入状态:

X[3] &nbsp; = 0x00000000
X[4] = 0x1FBCCCAB
X[5] = 0x289D7125
X[6] = 0x7E21555E

轮密钥: rk[3] = 0xDD302728

计算步骤:

步骤1: X[4] ⊕ X[5] ⊕ X[6] ⊕ rk[3]
&nbsp; &nbsp; &nbsp;= 0x1FBCCCAB ⊕ 0x289D7125 ⊕ 0x7E21555E ⊕ 0xDD302728
&nbsp; &nbsp; &nbsp;= 0x9430CFF8

步骤2: τ(0x9430CFF8) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x94, 0x30, 0xCF, 0xF8
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x9B, 0xE4, 0xD8, 0x79
&nbsp; &nbsp; &nbsp;τ输出: 0x9BE4D879

步骤3: L(0x9BE4D879) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x9BE4D879 ⊕ 0x6F9361E6 ⊕ 0x9361E66F ⊕ 0x61E66F93 ⊕ 0x799BE4D8
&nbsp; &nbsp; &nbsp;= 0x7F6BD4BB

步骤4: X[3] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x00000000 ⊕ 0x7F6BD4BB
&nbsp; &nbsp; &nbsp;= 0x7F6BD4BB

输出: X[7] = 0x7F6BD4BB


第4轮迭代 (i=4)

输入状态:

X[4] &nbsp; = 0x1FBCCCAB
X[5] = 0x289D7125
X[6] = 0x7E21555E
X[7] = 0x7F6BD4BB

轮密钥: rk[4] = 0xF4B61421

计算步骤:

步骤1: X[5] ⊕ X[6] ⊕ X[7] ⊕ rk[4]
&nbsp; &nbsp; &nbsp;= 0x289D7125 ⊕ 0x7E21555E ⊕ 0x7F6BD4BB ⊕ 0xF4B61421
&nbsp; &nbsp; &nbsp;= 0xDD61E4E1

步骤2: τ(0xDD61E4E1) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0xDD, 0x61, 0xE4, 0xE1
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xE5, 0x24, 0x0C, 0x69
&nbsp; &nbsp; &nbsp;τ输出: 0xE5240C69

步骤3: L(0xE5240C69) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xE5240C69 ⊕ 0x949031A7 ⊕ 0x9031A794 ⊕ 0x31A79490 ⊕ 0x69E5240C
&nbsp; &nbsp; &nbsp;= 0xB9C72AC6

步骤4: X[4] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x1FBCCCAB ⊕ 0xB9C72AC6
&nbsp; &nbsp; &nbsp;= 0xA67BE66D

输出: X[8] = 0xA67BE66D


第5轮迭代 (i=5)

输入状态:

X[5] &nbsp; = 0x289D7125
X[6] = 0x7E21555E
X[7] = 0x7F6BD4BB
X[8] = 0xA67BE66D

轮密钥: rk[5] = 0xEDFAD6F1

计算步骤:

步骤1: X[6] ⊕ X[7] ⊕ X[8] ⊕ rk[5]
&nbsp; &nbsp; &nbsp;= 0x7E21555E ⊕ 0x7F6BD4BB ⊕ 0xA67BE66D ⊕ 0xEDFAD6F1
&nbsp; &nbsp; &nbsp;= 0x4ACBB179

步骤2: τ(0x4ACBB179) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x4A, 0xCB, 0xB1, 0x79
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x3C, 0x41, 0xDB, 0x36
&nbsp; &nbsp; &nbsp;τ输出: 0x3C41DB36

步骤3: L(0x3C41DB36) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x3C41DB36 ⊕ 0xF1076CD8 ⊕ 0x076CD8F1 ⊕ 0x6CD8F107 ⊕ 0x363C41DB
&nbsp; &nbsp; &nbsp;= 0x90CEDFC3

步骤4: X[5] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x289D7125 ⊕ 0x90CEDFC3
&nbsp; &nbsp; &nbsp;= 0xB853AEE6

输出: X[9] = 0xB853AEE6


第6轮迭代 (i=6)

输入状态:

X[6] &nbsp; = 0x7E21555E
X[7] = 0x7F6BD4BB
X[8] = 0xA67BE66D
X[9] = 0xB853AEE6

轮密钥: rk[6] = 0x1540513D

计算步骤:

步骤1: X[7] ⊕ X[8] ⊕ X[9] ⊕ rk[6]
&nbsp; &nbsp; &nbsp;= 0x7F6BD4BB ⊕ 0xA67BE66D ⊕ 0xB853AEE6 ⊕ 0x1540513D
&nbsp; &nbsp; &nbsp;= 0x7403CD0D

步骤2: τ(0x7403CD0D) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x74, 0x03, 0xCD, 0x0D
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x9F, 0xFE, 0x10, 0xFB
&nbsp; &nbsp; &nbsp;τ输出: 0x9FFE10FB

步骤3: L(0x9FFE10FB) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x9FFE10FB ⊕ 0x7FF843EE ⊕ 0xF843EE7F ⊕ 0x43EE7FF8 ⊕ 0xFB9FFE10
&nbsp; &nbsp; &nbsp;= 0xA0343C82

步骤4: X[6] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x7E21555E ⊕ 0xA0343C82
&nbsp; &nbsp; &nbsp;= 0xDE1569DC

输出: X[10] = 0xDE1569DC


第7轮迭代 (i=7)

输入状态:

X[7] &nbsp; = 0x7F6BD4BB
X[8] = 0xA67BE66D
X[9] = 0xB853AEE6
X[10] = 0xDE1569DC

轮密钥: rk[7] = 0xC83EBD4D

计算步骤:

步骤1: X[8] ⊕ X[9] ⊕ X[10] ⊕ rk[7]
&nbsp; &nbsp; &nbsp;= 0xA67BE66D ⊕ 0xB853AEE6 ⊕ 0xDE1569DC ⊕ 0xC83EBD4D
&nbsp; &nbsp; &nbsp;= 0x08039C1A

步骤2: τ(0x08039C1A) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x08, 0x03, 0x9C, 0x1A
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x16, 0xFE, 0xF5, 0x13
&nbsp; &nbsp; &nbsp;τ输出: 0x16FEF513

步骤3: L(0x16FEF513) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x16FEF513 ⊕ 0x5BFBD44C ⊕ 0xFBD44C5B ⊕ 0xD44C5BFB ⊕ 0x1316FEF5
&nbsp; &nbsp; &nbsp;= 0x718BC80A

步骤4: X[7] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x7F6BD4BB ⊕ 0x718BC80A
&nbsp; &nbsp; &nbsp;= 0x0EE01CB1

输出: X[11] = 0x0EE01CB1 ✓


第8轮迭代 (i=8)

输入状态:

X[8] &nbsp; = 0xA67BE66D
X[9] = 0xB853AEE6
X[10] = 0xDE1569DC
X[11] = 0x0EE01CB1

轮密钥: rk[8] = 0xE5DE7FA7

计算步骤:

步骤1: X[9] ⊕ X[10] ⊕ X[11] ⊕ rk[8]
&nbsp; &nbsp; &nbsp;= 0xB853AEE6 ⊕ 0xDE1569DC ⊕ 0x0EE01CB1 ⊕ 0xE5DE7FA7
&nbsp; &nbsp; &nbsp;= 0x8D78A42C

步骤2: τ(0x8D78A42C) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x8D, 0x78, 0xA4, 0x2C
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x61, 0x4C, 0x82, 0xED
&nbsp; &nbsp; &nbsp;τ输出: 0x614C82ED

步骤3: L(0x614C82ED) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x614C82ED ⊕ 0x85320BB5 ⊕ 0x320BB585 ⊕ 0x0BB58532 ⊕ 0xED614C82
&nbsp; &nbsp; &nbsp;= 0x30A1F56D

步骤4: X[8] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xA67BE66D ⊕ 0x30A1F56D
&nbsp; &nbsp; &nbsp;= 0x96DA1300

输出: X[12] = 0x96DA1300


第9轮迭代 (i=9)

输入状态:

X[9] &nbsp; = 0xB853AEE6
X[10] = 0xDE1569DC
X[11] = 0x0EE01CB1
X[12] = 0x96DA1300

轮密钥: rk[9] = 0x5AFE4561

计算步骤:

步骤1: X[10] ⊕ X[11] ⊕ X[12] ⊕ rk[9]
&nbsp; &nbsp; &nbsp;= 0xDE1569DC ⊕ 0x0EE01CB1 ⊕ 0x96DA1300 ⊕ 0x5AFE4561
&nbsp; &nbsp; &nbsp;= 0x1CD1230C

步骤2: τ(0x1CD1230C) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x1C, 0xD1, 0x23, 0x0C
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x49, 0xC1, 0xF4, 0x28
&nbsp; &nbsp; &nbsp;τ输出: 0x49C1F428

步骤3: L(0x49C1F428) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x49C1F428 ⊕ 0x2707D0A1 ⊕ 0x07D0A127 ⊕ 0xD0A12707 ⊕ 0x2849C1F4
&nbsp; &nbsp; &nbsp;= 0x91FE635D

步骤4: X[9] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xB853AEE6 ⊕ 0x91FE635D
&nbsp; &nbsp; &nbsp;= 0x29ADCDBB

输出: X[13] = 0x29ADCDBB


第10轮迭代 (i=10)

输入状态:

X[10] &nbsp; = 0xDE1569DC
X[11] = 0x0EE01CB1
X[12] = 0x96DA1300
X[13] = 0x29ADCDBB

轮密钥: rk[10] = 0xE94A3F7E

计算步骤:

步骤1: X[11] ⊕ X[12] ⊕ X[13] ⊕ rk[10]
&nbsp; &nbsp; &nbsp;= 0x0EE01CB1 ⊕ 0x96DA1300 ⊕ 0x29ADCDBB ⊕ 0xE94A3F7E
&nbsp; &nbsp; &nbsp;= 0x58DDFD74

步骤2: τ(0x58DDFD74) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x58, 0xDD, 0xFD, 0x74
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xF8, 0xE5, 0xCB, 0x9F
&nbsp; &nbsp; &nbsp;τ输出: 0xF8E5CB9F

步骤3: L(0xF8E5CB9F) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xF8E5CB9F ⊕ 0xE3972E7F ⊕ 0x972E7FE3 ⊕ 0x2E7FE397 ⊕ 0x9FF8E5CB
&nbsp; &nbsp; &nbsp;= 0x3DDB9C5F

步骤4: X[10] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xDE1569DC ⊕ 0x3DDB9C5F
&nbsp; &nbsp; &nbsp;= 0xE3CEF583

输出: X[14] = 0xE3CEF583


第11轮迭代 (i=11)

输入状态:

X[11] &nbsp; = 0x0EE01CB1
X[12] = 0x96DA1300
X[13] = 0x29ADCDBB
X[14] = 0xE3CEF583

轮密钥: rk[11] = 0xC90C33AD

计算步骤:

步骤1: X[12] ⊕ X[13] ⊕ X[14] ⊕ rk[11]
&nbsp; &nbsp; &nbsp;= 0x96DA1300 ⊕ 0x29ADCDBB ⊕ 0xE3CEF583 ⊕ 0xC90C33AD
&nbsp; &nbsp; &nbsp;= 0x95B51895

步骤2: τ(0x95B51895) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x95, 0xB5, 0x18, 0x95
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x34, 0xFD, 0xAA, 0x34
&nbsp; &nbsp; &nbsp;τ输出: 0x34FDAA34

步骤3: L(0x34FDAA34) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x34FDAA34 ⊕ 0xD3F6A8D0 ⊕ 0xF6A8D0D3 ⊕ 0xA8D0D3F6 ⊕ 0x3434FDAA
&nbsp; &nbsp; &nbsp;= 0x8D47FC6B

步骤4: X[11] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x0EE01CB1 ⊕ 0x8D47FC6B
&nbsp; &nbsp; &nbsp;= 0x83A7E0DA

输出: X[15] = 0x83A7E0DA


第12轮迭代 (i=12)

输入状态:

X[12] &nbsp; = 0x96DA1300
X[13] = 0x29ADCDBB
X[14] = 0xE3CEF583
X[15] = 0x83A7E0DA

轮密钥: rk[12] = 0xA8A8DF0B

计算步骤:

步骤1: X[13] ⊕ X[14] ⊕ X[15] ⊕ rk[12]
&nbsp; &nbsp; &nbsp;= 0x29ADCDBB ⊕ 0xE3CEF583 ⊕ 0x83A7E0DA ⊕ 0xA8A8DF0B
&nbsp; &nbsp; &nbsp;= 0xE16C07E9

步骤2: τ(0xE16C07E9) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0xE1, 0x6C, 0x07, 0xE9
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x69, 0x01, 0xB7, 0xB9
&nbsp; &nbsp; &nbsp;τ输出: 0x6901B7B9

步骤3: L(0x6901B7B9) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x6901B7B9 ⊕ 0xA406DEE5 ⊕ 0x06DEE5A4 ⊕ 0xDEE5A406 ⊕ 0xB96901B7
&nbsp; &nbsp; &nbsp;= 0xAC552949

步骤4: X[12] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x96DA1300 ⊕ 0xAC552949
&nbsp; &nbsp; &nbsp;= 0x3A8F3A49

输出: X[16] = 0x3A8F3A49


第13轮迭代 (i=13)

输入状态:

X[13] &nbsp; = 0x29ADCDBB
X[14] = 0xE3CEF583
X[15] = 0x83A7E0DA
X[16] = 0x3A8F3A49

轮密钥: rk[13] = 0x26C94B0F

计算步骤:

步骤1: X[14] ⊕ X[15] ⊕ X[16] ⊕ rk[13]
&nbsp; &nbsp; &nbsp;= 0xE3CEF583 ⊕ 0x83A7E0DA ⊕ 0x3A8F3A49 ⊕ 0x26C94B0F
&nbsp; &nbsp; &nbsp;= 0x7C2F641F

步骤2: τ(0x7C2F641F) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x7C, 0x2F, 0x64, 0x1F
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xA0, 0x62, 0x63, 0x99
&nbsp; &nbsp; &nbsp;τ输出: 0xA0626399

步骤3: L(0xA0626399) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xA0626399 ⊕ 0x81898E66 ⊕ 0x898E6681 ⊕ 0x8E668189 ⊕ 0x99A06263
&nbsp; &nbsp; &nbsp;= 0xBFA36894

步骤4: X[13] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x29ADCDBB ⊕ 0xBFA36894
&nbsp; &nbsp; &nbsp;= 0x960EA52F

输出: X[17] = 0x960EA52F


第14轮迭代 (i=14)

输入状态:

X[14] &nbsp; = 0xE3CEF583
X[15] = 0x83A7E0DA
X[16] = 0x3A8F3A49
X[17] = 0x960EA52F

轮密钥: rk[14] = 0x2348FC7C

计算步骤:

步骤1: X[15] ⊕ X[16] ⊕ X[17] ⊕ rk[14]
&nbsp; &nbsp; &nbsp;= 0x83A7E0DA ⊕ 0x3A8F3A49 ⊕ 0x960EA52F ⊕ 0x2348FC7C
&nbsp; &nbsp; &nbsp;= 0x0C6E83C0

步骤2: τ(0x0C6E83C0) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x0C, 0x6E, 0x83, 0xC0
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x28, 0x78, 0xD2, 0x8D
&nbsp; &nbsp; &nbsp;τ输出: 0x2878D28D

步骤3: L(0x2878D28D) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x2878D28D ⊕ 0xA1E34A34 ⊕ 0xE34A34A1 ⊕ 0x4A34A1E3 ⊕ 0x8D2878D2
&nbsp; &nbsp; &nbsp;= 0xADCD7529

步骤4: X[14] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xE3CEF583 ⊕ 0xADCD7529
&nbsp; &nbsp; &nbsp;= 0x4E0380AA

输出: X[18] = 0x4E0380AA


第15轮迭代 (i=15)

输入状态:

X[15] &nbsp; = 0x83A7E0DA
X[16] = 0x3A8F3A49
X[17] = 0x960EA52F
X[18] = 0x4E0380AA

轮密钥: rk[15] = 0x285ED00F

计算步骤:

步骤1: X[16] ⊕ X[17] ⊕ X[18] ⊕ rk[15]
&nbsp; &nbsp; &nbsp;= 0x3A8F3A49 ⊕ 0x960EA52F ⊕ 0x4E0380AA ⊕ 0x285ED00F
&nbsp; &nbsp; &nbsp;= 0xCADCCFC3

步骤2: τ(0xCADCCFC3) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0xCA, 0xDC, 0xCF, 0xC3
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x5C, 0xB8, 0xD8, 0x92
&nbsp; &nbsp; &nbsp;τ输出: 0x5CB8D892

步骤3: L(0x5CB8D892) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x5CB8D892 ⊕ 0x72E36249 ⊕ 0xE3624972 ⊕ 0x624972E3 ⊕ 0x925CB8D8
&nbsp; &nbsp; &nbsp;= 0x3D2C3992

步骤4: X[15] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x83A7E0DA ⊕ 0x3D2C3992
&nbsp; &nbsp; &nbsp;= 0xBE8BD948

输出: X[19] = 0xBE8BD948 ✓


第16轮迭代 (i=16)

输入状态:

X[16] &nbsp; = 0x3A8F3A49
X[17] = 0x960EA52F
X[18] = 0x4E0380AA
X[19] = 0xBE8BD948

轮密钥: rk[16] = 0x17908EE3

计算步骤:

步骤1: X[17] ⊕ X[18] ⊕ X[19] ⊕ rk[16]
&nbsp; &nbsp; &nbsp;= 0x960EA52F ⊕ 0x4E0380AA ⊕ 0xBE8BD948 ⊕ 0x17908EE3
&nbsp; &nbsp; &nbsp;= 0x7116722E

步骤2: τ(0x7116722E) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x71, 0x16, 0x72, 0x2E
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x00, 0x04, 0x46, 0xAC
&nbsp; &nbsp; &nbsp;τ输出: 0x000446AC

步骤3: L(0x000446AC) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x000446AC ⊕ 0x00111AB0 ⊕ 0x111AB000 ⊕ 0x1AB00011 ⊕ 0xAC000446
&nbsp; &nbsp; &nbsp;= 0xA7BFE84B

步骤4: X[16] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x3A8F3A49 ⊕ 0xA7BFE84B
&nbsp; &nbsp; &nbsp;= 0x9D30D202

输出: X[20] = 0x9D30D202


第17轮迭代 (i=17)

输入状态:

X[17] &nbsp; = 0x960EA52F
X[18] = 0x4E0380AA
X[19] = 0xBE8BD948
X[20] = 0x9D30D202

轮密钥: rk[17] = 0x29B3F5C1

计算步骤:

步骤1: X[18] ⊕ X[19] ⊕ X[20] ⊕ rk[17]
&nbsp; &nbsp; &nbsp;= 0x4E0380AA ⊕ 0xBE8BD948 ⊕ 0x9D30D202 ⊕ 0x29B3F5C1
&nbsp; &nbsp; &nbsp;= 0x440B7E21

步骤2: τ(0x440B7E21) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x44, 0x0B, 0x7E, 0x21
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xF3, 0xC2, 0xC8, 0x42
&nbsp; &nbsp; &nbsp;τ输出: 0xF3C2C842

步骤3: L(0xF3C2C842) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xF3C2C842 ⊕ 0xCF0B210B ⊕ 0x0B210BCF ⊕ 0x210BCF0B ⊕ 0x42F3C2C8
&nbsp; &nbsp; &nbsp;= 0x5410EF45

步骤4: X[17] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x960EA52F ⊕ 0x5410EF45
&nbsp; &nbsp; &nbsp;= 0xC21E4A6A

输出: X[21] = 0xC21E4A6A


第18轮迭代 (i=18)

输入状态:

X[18] &nbsp; = 0x4E0380AA
X[19] = 0xBE8BD948
X[20] = 0x9D30D202
X[21] = 0xC21E4A6A

轮密钥: rk[18] = 0x61D27218

计算步骤:

步骤1: X[19] ⊕ X[20] ⊕ X[21] ⊕ rk[18]
&nbsp; &nbsp; &nbsp;= 0xBE8BD948 ⊕ 0x9D30D202 ⊕ 0xC21E4A6A ⊕ 0x61D27218
&nbsp; &nbsp; &nbsp;= 0x80773338

步骤2: τ(0x80773338) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x80, 0x77, 0x33, 0x38
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xEA, 0x52, 0xA9, 0x80
&nbsp; &nbsp; &nbsp;τ输出: 0xEA52A980

步骤3: L(0xEA52A980) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xEA52A980 ⊕ 0xA94AA603 ⊕ 0x4AA603A9 ⊕ 0xA603A94A ⊕ 0x80EA52A9
&nbsp; &nbsp; &nbsp;= 0x2F57F7C9

步骤4: X[18] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x4E0380AA ⊕ 0x2F57F7C9
&nbsp; &nbsp; &nbsp;= 0x61547763

输出: X[22] = 0x61547763


第19轮迭代 (i=19)

输入状态:

X[19] &nbsp; = 0xBE8BD948
X[20] = 0x9D30D202
X[21] = 0xC21E4A6A
X[22] = 0x61547763

轮密钥: rk[19] = 0xA2CDA8E6

计算步骤:

步骤1: X[20] ⊕ X[21] ⊕ X[22] ⊕ rk[19]
&nbsp; &nbsp; &nbsp;= 0x9D30D202 ⊕ 0xC21E4A6A ⊕ 0x61547763 ⊕ 0xA2CDA8E6
&nbsp; &nbsp; &nbsp;= 0x9CB747ED

步骤2: τ(0x9CB747ED) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x9C, 0xB7, 0x47, 0xED
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xF5, 0x2F, 0xBA, 0x6E
&nbsp; &nbsp; &nbsp;τ输出: 0xF52FBA6E

步骤3: L(0xF52FBA6E) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xF52FBA6E ⊕ 0xD4BEE9BB ⊕ 0xBEE9BBD4 ⊕ 0xE9BBD4BE ⊕ 0x6EF52FBA
&nbsp; &nbsp; &nbsp;= 0x18361305

步骤4: X[19] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xBE8BD948 ⊕ 0x18361305
&nbsp; &nbsp; &nbsp;= 0xA6BDCA4D

输出: X[23] = 0xA6BDCA4D


第20轮迭代 (i=20)

输入状态:

X[20] &nbsp; = 0x9D30D202
X[21] = 0xC21E4A6A
X[22] = 0x61547763
X[23] = 0xA6BDCA4D

轮密钥: rk[20] = 0x4A28ABD4

计算步骤:

步骤1: X[21] ⊕ X[22] ⊕ X[23] ⊕ rk[20]
&nbsp; &nbsp; &nbsp;= 0xC21E4A6A ⊕ 0x61547763 ⊕ 0xA6BDCA4D ⊕ 0x4A28ABD4
&nbsp; &nbsp; &nbsp;= 0x4FDF5C90

步骤2: τ(0x4FDF5C90) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x4F, 0xDF, 0x5C, 0x90
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xA8, 0xB0, 0x70, 0xE0
&nbsp; &nbsp; &nbsp;τ输出: 0xA8B070E0

步骤3: L(0xA8B070E0) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xA8B070E0 ⊕ 0xA2C1C382 ⊕ 0xC1C382A2 ⊕ 0xC382A2C1 ⊕ 0xE0A8B070
&nbsp; &nbsp; &nbsp;= 0xE8982371

步骤4: X[20] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x9D30D202 ⊕ 0xE8982371
&nbsp; &nbsp; &nbsp;= 0x75A8F173

输出: X[24] = 0x75A8F173


第21轮迭代 (i=21)

输入状态:

X[21] &nbsp; = 0xC21E4A6A
X[22] = 0x61547763
X[23] = 0xA6BDCA4D
X[24] = 0x75A8F173

轮密钥: rk[21] = 0x105D3CD5

计算步骤:

步骤1: X[22] ⊕ X[23] ⊕ X[24] ⊕ rk[21]
&nbsp; &nbsp; &nbsp;= 0x61547763 ⊕ 0xA6BDCA4D ⊕ 0x75A8F173 ⊕ 0x105D3CD5
&nbsp; &nbsp; &nbsp;= 0xA21C7088

步骤2: τ(0xA21C7088) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0xA2, 0x1C, 0x70, 0x88
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xE2, 0x49, 0xD4, 0xA3
&nbsp; &nbsp; &nbsp;τ输出: 0xE249D4A3

步骤3: L(0xE249D4A3) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xE249D4A3 ⊕ 0x8927528F ⊕ 0x27528F89 ⊕ 0x528F8927 ⊕ 0xA3E249D4
&nbsp; &nbsp; &nbsp;= 0xBD51C956

步骤4: X[21] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xC21E4A6A ⊕ 0xBD51C956
&nbsp; &nbsp; &nbsp;= 0x7F4F833C

输出: X[25] = 0x7F4F833C


第22轮迭代 (i=22)

输入状态:

X[22] &nbsp; = 0x61547763
X[23] = 0xA6BDCA4D
X[24] = 0x75A8F173
X[25] = 0x7F4F833C

轮密钥: rk[22] = 0xB3392991

计算步骤:

步骤1: X[23] ⊕ X[24] ⊕ X[25] ⊕ rk[22]
&nbsp; &nbsp; &nbsp;= 0xA6BDCA4D ⊕ 0x75A8F173 ⊕ 0x7F4F833C ⊕ 0xB3392991
&nbsp; &nbsp; &nbsp;= 0x1F639193

步骤2: τ(0x1F639193) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x1F, 0x63, 0x91, 0x93
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x99, 0x5E, 0xAE, 0xA4
&nbsp; &nbsp; &nbsp;τ输出: 0x995EAEA4

步骤3: L(0x995EAEA4) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x995EAEA4 ⊕ 0x657ABA92 ⊕ 0x7ABA9265 ⊕ 0xBA92657A ⊕ 0xA4995EAE
&nbsp; &nbsp; &nbsp;= 0x9895BD87

步骤4: X[22] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x61547763 ⊕ 0x9895BD87
&nbsp; &nbsp; &nbsp;= 0xF9C1CAE4

输出: X[26] = 0xF9C1CAE4


第23轮迭代 (i=23)

输入状态:

X[23] &nbsp; = 0xA6BDCA4D
X[24] = 0x75A8F173
X[25] = 0x7F4F833C
X[26] = 0xF9C1CAE4

轮密钥: rk[23] = 0xA5143E89

计算步骤:

步骤1: X[24] ⊕ X[25] ⊕ X[26] ⊕ rk[23]
&nbsp; &nbsp; &nbsp;= 0x75A8F173 ⊕ 0x7F4F833C ⊕ 0xF9C1CAE4 ⊕ 0xA5143E89
&nbsp; &nbsp; &nbsp;= 0x56328622

步骤2: τ(0x56328622) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x56, 0x32, 0x86, 0x22
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xDA, 0x1C, 0x38, 0x50
&nbsp; &nbsp; &nbsp;τ输出: 0xDA1C3850

步骤3: L(0xDA1C3850) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xDA1C3850 ⊕ 0x6870E143 ⊕ 0x70E14368 ⊕ 0xE1436870 ⊕ 0x50DA1C38
&nbsp; &nbsp; &nbsp;= 0x7314EE33

步骤4: X[23] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xA6BDCA4D ⊕ 0x7314EE33
&nbsp; &nbsp; &nbsp;= 0xD5A9247E

输出: X[27] = 0xD5A9247E ✓


第24轮迭代 (i=24)

输入状态:

X[24] &nbsp; = 0x75A8F173
X[25] = 0x7F4F833C
X[26] = 0xF9C1CAE4
X[27] = 0xD5A9247E

轮密钥: rk[24] = 0x9E19AB2C

计算步骤:

步骤1: X[25] ⊕ X[26] ⊕ X[27] ⊕ rk[24]
&nbsp; &nbsp; &nbsp;= 0x7F4F833C ⊕ 0xF9C1CAE4 ⊕ 0xD5A9247E ⊕ 0x9E19AB2C
&nbsp; &nbsp; &nbsp;= 0xCD3EC68A

步骤2: τ(0xCD3EC68A) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0xCD, 0x3E, 0xC6, 0x8A
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x10, 0x3F, 0xBC, 0xF2
&nbsp; &nbsp; &nbsp;τ输出: 0x103FBCF2

步骤3: L(0x103FBCF2) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x103FBCF2 ⊕ 0x40FEF3C8 ⊕ 0xFEF3C840 ⊕ 0xF3C840FE ⊕ 0xF2103FBC
&nbsp; &nbsp; &nbsp;= 0xAFEAF838

步骤4: X[24] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x75A8F173 ⊕ 0xAFEAF838
&nbsp; &nbsp; &nbsp;= 0xDA42094B

输出: X[28] = 0xDA42094B


第25轮迭代 (i=25)

输入状态:

X[25] &nbsp; = 0x7F4F833C
X[26] = 0xF9C1CAE4
X[27] = 0xD5A9247E
X[28] = 0xDA42094B

轮密钥: rk[25] = 0x16EB5274

计算步骤:

步骤1: X[26] ⊕ X[27] ⊕ X[28] ⊕ rk[25]
&nbsp; &nbsp; &nbsp;= 0xF9C1CAE4 ⊕ 0xD5A9247E ⊕ 0xDA42094B ⊕ 0x16EB5274
&nbsp; &nbsp; &nbsp;= 0xE0C1B5A5

步骤2: τ(0xE0C1B5A5) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0xE0, 0xC1, 0xB5, 0xA5
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x89, 0x1B, 0xFD, 0x66
&nbsp; &nbsp; &nbsp;τ输出: 0x891BFD66

步骤3: L(0x891BFD66) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x891BFD66 ⊕ 0x246FF59A ⊕ 0x6FF59A24 ⊕ 0xF59A246F ⊕ 0x66891BFD
&nbsp; &nbsp; &nbsp;= 0x5192AD4A

步骤4: X[25] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x7F4F833C ⊕ 0x5192AD4A
&nbsp; &nbsp; &nbsp;= 0x2EDD2E76

输出: X[29] = 0x2EDD2E76


第26轮迭代 (i=26)

输入状态:

X[26] &nbsp; = 0xF9C1CAE4
X[27] = 0xD5A9247E
X[28] = 0xDA42094B
X[29] = 0x2EDD2E76

轮密钥: rk[26] = 0xBD46BFDE

计算步骤:

步骤1: X[27] ⊕ X[28] ⊕ X[29] ⊕ rk[26]
&nbsp; &nbsp; &nbsp;= 0xD5A9247E ⊕ 0xDA42094B ⊕ 0x2EDD2E76 ⊕ 0xBD46BFDE
&nbsp; &nbsp; &nbsp;= 0x9C70BC9D

步骤2: τ(0x9C70BC9D) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x9C, 0x70, 0xBC, 0x9D
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xF5, 0xD4, 0x6D, 0x8C
&nbsp; &nbsp; &nbsp;τ输出: 0xF5D46D8C

步骤3: L(0xF5D46D8C) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xF5D46D8C ⊕ 0xD751B633 ⊕ 0x51B633D7 ⊕ 0xB633D751 ⊕ 0x8CF5D46D
&nbsp; &nbsp; &nbsp;= 0x49F5EB54

步骤4: X[26] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xF9C1CAE4 ⊕ 0x49F5EB54
&nbsp; &nbsp; &nbsp;= 0xB03421B0

输出: X[30] = 0xB03421B0


第27轮迭代 (i=27)

输入状态:

X[27] &nbsp; = 0xD5A9247E
X[28] = 0xDA42094B
X[29] = 0x2EDD2E76
X[30] = 0xB03421B0

轮密钥: rk[27] = 0x70453A24

计算步骤:

步骤1: X[28] ⊕ X[29] ⊕ X[30] ⊕ rk[27]
&nbsp; &nbsp; &nbsp;= 0xDA42094B ⊕ 0x2EDD2E76 ⊕ 0xB03421B0 ⊕ 0x70453A24
&nbsp; &nbsp; &nbsp;= 0x34EE3CA9

步骤2: τ(0x34EE3CA9) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x34, 0xEE, 0x3C, 0xA9
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0xC9, 0xC6, 0x75, 0x29
&nbsp; &nbsp; &nbsp;τ输出: 0xC9C67529

步骤3: L(0xC9C67529) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0xC9C67529 ⊕ 0x2719D4A7 ⊕ 0x19D4A727 ⊕ 0xD4A72719 ⊕ 0x29C9C675
&nbsp; &nbsp; &nbsp;= 0x0A65E7C5

步骤4: X[27] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xD5A9247E ⊕ 0x0A65E7C5
&nbsp; &nbsp; &nbsp;= 0xDFCCC3BB

输出: X[31] = 0xDFCCC3BB


第28轮迭代 (i=28)

输入状态:

X[28] &nbsp; = 0xDA42094B
X[29] = 0x2EDD2E76
X[30] = 0xB03421B0
X[31] = 0xDFCCC3BB

轮密钥: rk[28] = 0x11C4BEC2

计算步骤:

步骤1: X[29] ⊕ X[30] ⊕ X[31] ⊕ rk[28]
&nbsp; &nbsp; &nbsp;= 0x2EDD2E76 ⊕ 0xB03421B0 ⊕ 0xDFCCC3BB ⊕ 0x11C4BEC2
&nbsp; &nbsp; &nbsp;= 0x50E172BF

步骤2: τ(0x50E172BF) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x50, 0xE1, 0x72, 0xBF
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x68, 0x69, 0x46, 0x51
&nbsp; &nbsp; &nbsp;τ输出: 0x68694651

步骤3: L(0x68694651) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x68694651 ⊕ 0xA1A51945 ⊕ 0xA51945A1 ⊕ 0x1945A1A5 ⊕ 0x51686946
&nbsp; &nbsp; &nbsp;= 0x24F8D256

步骤4: X[28] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xDA42094B ⊕ 0x24F8D256
&nbsp; &nbsp; &nbsp;= 0xFEBADB1D

输出: X[32] = 0xFEBADB1D


第29轮迭代 (i=29)

输入状态:

X[29] &nbsp; = 0x2EDD2E76
X[30] = 0xB03421B0
X[31] = 0xDFCCC3BB
X[32] = 0xFEBADB1D

轮密钥: rk[29] = 0x47DB1C0D

计算步骤:

步骤1: X[30] ⊕ X[31] ⊕ X[32] ⊕ rk[29]
&nbsp; &nbsp; &nbsp;= 0xB03421B0 ⊕ 0xDFCCC3BB ⊕ 0xFEBADB1D ⊕ 0x47DB1C0D
&nbsp; &nbsp; &nbsp;= 0xD699251B

步骤2: τ(0xD699251B) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0xD6, 0x99, 0x25, 0x1B
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x7B, 0x93, 0xEF, 0x26
&nbsp; &nbsp; &nbsp;τ输出: 0x7B93EF26

步骤3: L(0x7B93EF26) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x7B93EF26 ⊕ 0xEE4FBC99 ⊕ 0x4FBC99EE ⊕ 0xBC99EE4F ⊕ 0x267B93EF
&nbsp; &nbsp; &nbsp;= 0x4082B7F1

步骤4: X[29] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0x2EDD2E76 ⊕ 0x4082B7F1
&nbsp; &nbsp; &nbsp;= 0x6E5F9987

输出: X[33] = 0x6E5F9987


第30轮迭代 (i=30)

输入状态:

X[30] &nbsp; = 0xB03421B0
X[31] = 0xDFCCC3BB
X[32] = 0xFEBADB1D
X[33] = 0x6E5F9987

轮密钥: rk[30] = 0x4995756A

计算步骤:

步骤1: X[31] ⊕ X[32] ⊕ X[33] ⊕ rk[30]
&nbsp; &nbsp; &nbsp;= 0xDFCCC3BB ⊕ 0xFEBADB1D ⊕ 0x6E5F9987 ⊕ 0x4995756A
&nbsp; &nbsp; &nbsp;= 0x06BCF44B

步骤2: τ(0x06BCF44B) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x06, 0xBC, 0xF4, 0x4B
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x3D, 0x6D, 0x3A, 0x19
&nbsp; &nbsp; &nbsp;τ输出: 0x3D6D3A19

步骤3: L(0x3D6D3A19) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x3D6D3A19 ⊕ 0xF5B4E864 ⊕ 0xB4E864F5 ⊕ 0xE864F5B4 ⊕ 0x193D6D3A
&nbsp; &nbsp; &nbsp;= 0x8D682E06

步骤4: X[30] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xB03421B0 ⊕ 0x8D682E06
&nbsp; &nbsp; &nbsp;= 0x3D5C0FB6

输出: X[34] = 0x3D5C0FB6


第31轮迭代 (i=31)

输入状态:

X[31] &nbsp; = 0xDFCCC3BB
X[32] = 0xFEBADB1D
X[33] = 0x6E5F9987
X[34] = 0x3D5C0FB6

轮密钥: rk[31] = 0xE788F4C2

计算步骤:

步骤1: X[32] ⊕ X[33] ⊕ X[34] ⊕ rk[31]
&nbsp; &nbsp; &nbsp;= 0xFEBADB1D ⊕ 0x6E5F9987 ⊕ 0x3D5C0FB6 ⊕ 0xE788F4C2
&nbsp; &nbsp; &nbsp;= 0x4A31B9EE

步骤2: τ(0x4A31B9EE) - S盒替换
&nbsp; &nbsp; &nbsp;输入字节: 0x4A, 0x31, 0xB9, 0xEE
&nbsp; &nbsp; &nbsp;S盒输出: &nbsp;0x3C, 0xB3, 0xFF, 0xC6
&nbsp; &nbsp; &nbsp;τ输出: 0x3CB3FFC6

步骤3: L(0x3CB3FFC6) - 线性变换
&nbsp; &nbsp; &nbsp;= B ⊕ (B <<< 2) ⊕ (B <<< 10) ⊕ (B <<< 18) ⊕ (B <<< 24)
&nbsp; &nbsp; &nbsp;= 0x3CB3FFC6 ⊕ 0xF2CFFF18 ⊕ 0xCFFF18F2 ⊕ 0xFF18F2CF ⊕ 0xC63CB3FF
&nbsp; &nbsp; &nbsp;= 0x38A7591C

步骤4: X[31] ⊕ T(...)
&nbsp; &nbsp; &nbsp;= 0xDFCCC3BB ⊕ 0x38A7591C
&nbsp; &nbsp; &nbsp;= 0xE76B9AA7

输出: X[35] = 0xE76B9AA7 ✓


3.3.2 32轮迭代结果汇总表

| 轮次 | 轮密钥 rk[i] | 输出 X[i+4] | | — | — | — | | 0 | C994A1D9 | 1FBCCCAB | | 1 | 8E961DA9 | 289D7125 | | 2 | 3B064726 | 7E21555E | | 3 | DD302728 | 7F6BD4BB | | 4 | F4B61421 | A67BE66D | | 5 | EDFAD6F1 | B853AEE6 | | 6 | 1540513D | DE1569DC | | 7 | C83EBD4D | 0EE01CB1 ✓ | | 8 | E5DE7FA7 | 96DA1300 | | 9 | 5AFE4561 | 29ADCDBB | | 10 | E94A3F7E | E3CEF583 | | 11 | C90C33AD | 83A7E0DA | | 12 | A8A8DF0B | 3A8F3A49 | | 13 | 26C94B0F | 960EA52F | | 14 | 2348FC7C | 4E0380AA | | 15 | 285ED00F | BE8BD948 ✓ | | 16 | 17908EE3 | 9D30D202 | | 17 | 29B3F5C1 | C21E4A6A | | 18 | 61D27218 | 61547763 | | 19 | A2CDA8E6 | A6BDCA4D | | 20 | 4A28ABD4 | 75A8F173 | | 21 | 105D3CD5 | 7F4F833C | | 22 | B3392991 | F9C1CAE4 | | 23 | A5143E89 | D5A9247E ✓ | | 24 | 9E19AB2C | DA42094B | | 25 | 16EB5274 | 2EDD2E76 | | 26 | BD46BFDE | B03421B0 | | 27 | 70453A24 | DFCCC3BB | | 28 | 11C4BEC2 | FEBADB1D | | 29 | 47DB1C0D | 6E5F9987 | | 30 | 4995756A | 3D5C0FB6 | | 31 | E788F4C2 | E76B9AA7 ✓ |

验证结果: ✅ 全部32轮中间结果验证通过

3.4 反序变换 R(第55-61行)

原文内容:

反序变换 R
&nbsp; (Y0,Y1,Y2,Y3) = (X35,X34,X33,X32)
&nbsp; Y0 = 0xE76B9AA7, Y1 = 0x3D5C0FB6, Y2 = 0x6E5F9987, Y3 = 0xFEBADB1D
&nbsp; 密文块输出: E76B9AA73D5C0FB66E5F9987FEBADB1D

国标对应: 国标公式(5)

(Y0, Y1, Y2, Y3) = R(X32, X33, X34, X35) = (X35, X34, X33, X32)

计算过程:

Y₀ = X₃₅ = 0xE76B9AA7
Y₁ = X₃₄ = 0x3D5C0FB6
Y₂ = X₃₃ = 0x6E5F9987
Y₃ = X₃₂ = 0xFEBADB1D

密文输出E76B9AA73D5C0FB66E5F9987FEBADB1D

验证结果: ✅ 反序变换正确


四、计算结果汇总

| 项目 | 值 | | — | — | | 输入密钥 | 5C62DA45B0B2ACF9F3DA5DB93D18CAFD | | 输入明文 | 利刃信安 (原始长度: 12 字节) | | 填充后明文 | E588A9E58883E4BFA1E5AE8900000000 | | 数据块数 | 1 | | 输出密文 | E76B9AA73D5C0FB66E5F9987FEBADB1D |


五、国标示例验证

为验证算法实现的正确性,使用国标附录A.1的示例进行验证:

输入:

  • • 明文: 0123456789ABCDEFFEDCBA9876543210
  • • 密钥: 0123456789ABCDEFFEDCBA9876543210

计算结果:

  • • rk[0] = F12186F9(国标: F12186F9)✓
  • • rk[31] = 9124A012(国标: 9124A012)✓
  • • 密文输出: 681EDF34D206965E86B3E94F536E4246(国标: 681EDF34D206965E86B3E94F536E4246)✓

结论:算法实现与国标完全一致

文档版本: v3.0 生成日期: 2026-03-21 验证状态: ✅ 全部通过


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:利刃信安 利刃信安 利刃信安《【商密测评】SM4 分组密码算法完整计算过程》

红队工具–Erebus 网络安全文章

红队工具–Erebus

文章总结: Erebus是一种现代初始访问封装器,旨在缩短开发到部署时间,以备战入侵行动。它自带多种技术,可打造复杂链条并帮助绕过安全措施。文章还提到了在Myt
评论:0   参与:  0