完成4比特和8比特S盒的非线性度的计算程序
时间: 2024-03-16 21:43:56 浏览: 20
好的,我可以为您提供一个计算S盒非线性度的程序。您可以根据您所需要的位数进行修改。
```python
import numpy as np
def calc_nonlinearity(s_box):
"""
计算S盒的非线性度
:param s_box: S盒
:return: 非线性度
"""
n = len(s_box)
max_diff = 2**(n-1)
nonlinearity = 0
for a in range(max_diff):
# 生成所有可能的输入差分
input_diff = [int(x) for x in bin(a)[2:].zfill(n)]
output_diff_set = set()
for x in range(2**n):
# 对于每个输入x,计算S盒输出的差分
output_diff = bin(s_box[x] ^ s_box[x^a])[2:].zfill(n)
output_diff_set.add(output_diff)
# 计算差分集合的最小非零线性度
min_lin = n
for output_diff in output_diff_set:
if output_diff == '0'*n:
continue
output_diff_vec = np.array([int(x) for x in output_diff])
lin = 0
for b in range(2**n):
input_vec = np.array([int(x) for x in bin(b)[2:].zfill(n)])
if np.dot(input_vec, output_diff_vec) % 2 == 1:
lin += 1
min_lin = min(min_lin, lin)
nonlinearity = max(nonlinearity, 2**(n-1) - min_lin)
return nonlinearity
```
其中,s_box是一个长度为2^n的列表,表示S盒的映射。您可以将其替换为您所需要计算的S盒,然后调用该函数即可得到其非线性度。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)