DES S盒差分分布表代码示例 - Python实现
这是一个Python代码示例,用于构造DES的S盒差分分布表:
# 定义S盒
S_BOX = [
[14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7],
[0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8],
[4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0],
[15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13],
]
# 定义差分分布表
DIFF_TABLE = [[0 for _ in range(16)] for _ in range(16)]
# 构造差分分布表
for i in range(16):
for j in range(16):
x = i ^ j
y = S_BOX[i >> 2][i & 3] ^ S_BOX[j >> 2][j & 3]
DIFF_TABLE[x][y] += 1
# 输出差分分布表
for i in range(16):
for j in range(16):
print('{:2d}'.format(DIFF_TABLE[i][j]), end=' ')
print()
代码解释:
- 首先定义了DES的S盒,这里只给出了一个S盒的示例,实际上DES中有8个S盒;
- 然后定义了一个16x16的差分分布表,初始值都为0;
- 接着使用两层循环遍历差分分布表中的每个元素,计算S盒对应的输入差分和输出差分,然后在差分分布表中对应的位置加1;
- 最后输出完整的差分分布表。
注意:这里仅给出了一个S盒的差分分布表构造代码,如果要构造DES的完整差分分布表,需要重复这个过程8次,对每个S盒都进行计算。
原文地址: https://www.cveoy.top/t/topic/mgeD 著作权归作者所有。请勿转载和采集!