Skip to content

zhifeiyv666/Sbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

算法

根据本文提出的混沌映射S盒的设计原理,得到混沌S盒的具体设计步骤:

  • 1)令X0=K,K∈(0,1), 精度为64位;
  • 2)计算混沌迭代方程: Xn=AX,(1- X,),得到实数随机序列X。, X... X,序列长度n = 2000;
  • 3)通过方程Y, =[MX]把随机序列X。映射为0至255之间的整数集,其中M = 256;
  • 4)将整数集中的数按以下方式两两分组: G()={Y,Y}, i∈[0,n/2], 当i=1000时,G()={Y;,Yo};
  • 5)设置初始表: Sbox = {0,1...255};
  • 6)通过置换NewSbox = {Sbx(G())},交换Sbox中Y,与Y41的位置的值,得到新的S盒;
  • 7)对6)进行i次置换,测试第i次NewSbox的8个布尔函数的非线性度(LP)和输入输出差分分布(DP);
  • 8)如果DPmax大于10或LPmim小于100, 返回6);
  • 9)如果DPmx小于10且LPmin大于100,将满足要求的S盒NewSbox;存储,并记录满足该条件的初始参数X。;
  • 10)当迭代次数i= 1000时,若还没有满足条件的S盒,则修改K的值,并返回1);
  • 11)若需要生成下一个S盒,返回1); 不需要,则结束。

迷惑点

  • 第7部种一次置换的定义是什么?
    • 两个元素交换一次算一次置换(感觉不太对劲)
    • 整个Sbox按照划分的G全部置换算一次交换:带来的问题是:这样两次交换和0次交换好像影响相互抵消了(不确定,没细究,直觉)
  • K(即X0)是否需要按照一定步长遍历区间(0,1)依次调用改方法来实现得到最优参数(机器计算出来)?还是这个参数是人计算出来的?
  • i,置换次数同K.

运行

示例如入口

step1: 初始化类,设置参数

sbox = Sbox(K = 0.356, A = 4, KStep = 0.001)

step2: 运行启动函数

sbox.start()

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages