[发明专利]一种密码学置换的枚举方法及系统有效

专利信息
申请号: 201910613016.2 申请日: 2019-07-09
公开(公告)号: CN110266471B 公开(公告)日: 2021-10-15
发明(设计)人: 童言;徐士伟;王邦菊;郭曦;赵逸之 申请(专利权)人: 华中农业大学
主分类号: H04L9/06 分类号: H04L9/06
代理公司: 北京金智普华知识产权代理有限公司 11401 代理人: 杨采良
地址: 430000 湖*** 国省代码: 湖北;42
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 密码学 置换 枚举 方法 系统
【权利要求书】:

1.一种密码学置换的枚举方法,其特征在于,所述密码学置换的枚举方法包括以下步骤:

步骤一,获取n的值,n为双正形置换的维度值,取值范围为2≤n≤4;

步骤二,选取一个次数为n的不可约多项式,并基于这个不可约多项式,构造GF(2n)上的乘法表;其中,GF(2n)表示特征为2并且通过n次扩张得到的有限域;

步骤三,基于乘法表构造一个2n-1行2n-1列的方阵,行号表示置换的输入,列号表示置换的输出,该方阵用于数组存储与访问;同时对符号进行相关定义,所述定义相关符号变量具体包括:

(1)k表示行号,k的初值为1,所述行号取值范围为大于等于0,小于等于2n-1;

(2)P[k]表示列号,方阵中第k行第P[k]列的元素为k*P[k],其中*为GF(2n)上的乘法;所述列号取值范围为大于等于0,小于等于2n-1;

(3)数组flagmulti[2n]、flagfirst[2n]、flagrow[2n]表示标志位,数组pre[2n]、next[2n]、link[2n]表示一个单向静态链表,数组beginning[2n]存储初始列号初始记录位置,beginning[k]记录第k行的初始位置;

1)标志位flagmulti[i]=1表示i等于之前某一行号与列号的乘积,flagmulti[i]=0则表示相反的情况,其中1≤i≤2n-1,用于遍历行号;

2)link为一个包含n个元素的单向静态链表,并且初始化为link[0]=0,link[2n-1]=1,link[i]=i+1,其中1≤i≤2n-1,用于遍历行号;所述link链表表示从1到2n-1这2n-1个列号中所有的可用资源,当一个列号被使用了,则从链表中删除,并重构链表;

3)对于每一个节点,i表示节点的行号,P[i]表示节点的列号,pre[i]表示第i行列号P[i]的前一个节点,next[i]表示第i行列号P[i]的下一个节点;

4)标志位数组flagfirst[2n],当发现一个P[i]被选中时,如果i是1,也就是在第1行选中了列号P[1],就将flagfirst[P[1]]置位为1,初始值是0;

5)标志位数组flagrow[2n]用于标记beginning[i]记录的每一行的初始位置,当一行遍历完,将flagrow[i]置为1;同时进行初始化;

步骤四,判断k是否大于0;若大于0,则执行步骤五;否则程序终止;

步骤五,基于判断行标志位变量flagrow[k]是否被置位从而判断第k行的所有列号是否均已试过;若没有则执行步骤六,否则执行步骤七;

步骤六,如果当前P[k]同时满足两个要求,则对各标志位数组以及链表做相应的处理,同时停止执行步骤六,并开始执行步骤七;如果不满足,则取链表中的下一个节点为P[k],并返回执行步骤五;

所述P[k]同时满足的两个要求条件具体包括:

第一:flagfirst[k]没有被置位,或者P[k]不等于1;

第二:flagmulti[k*P[k]]没有被置位;

所述对各标志位数组以及链表做相应的处理方法具体包括:

flagmulti[k*P[k]]=1,也就是被置位;link[pre[k]]=next[k];

link[P[k]]=0,表示将P[k]从链表中删除;判断行号k是否等于1,如果等于1,则将flagfirst[P[k]]置位为1;

步骤七,判断当前k行所有的列号是否均已试过;若没有则进一步判断k是否等于最大行号;若有则置换i→P[i]是乘法正形置换,其中0≤i≤2n-1,用于遍历所有的行号,并同时判断该置换是否是加法正形置换;若是则记录下结果,并通过对调行号和列号得到逆置换,并记录下结果;若不是则不记录也不对调;随后回退两行,将对应的两个列号重新加入链表,并将k减1,取下一个节点为P[k],然后返回执行步骤四;如果k不等于最大行号,则将k加1,进入下一行,并完成各标志位以及链表的处理,返回执行步骤四;如果当前k行所有的列号均已试过,执行步骤八;

所述回退两行,将对应的两个列号重新加入链表的方法具体包括:

flagmulti[(2n-2)*P[2n-2]]=flagmulti[(2n-2)*P[2n-2]]=0;

link[P[2n-1]]=next[2n-1];

link[pre[2n-1]]=P[2n-1];

link[P[2n-2]]=next[2n-2];link[pre[2n-2]]=P[2n-2];

所述完成各标志位以及链表的处理方法具体包括:

pre[k]=pre[k-1];

P[k]=next[k-1];

beginning[k]=P[k];

flagrow[k]=0;

next[k]=link[P[k]];

步骤八中,所述将当前的P[k]添加到链表的方法具体包括:

flagmulti[k*P[k]]=0;

link[P[k]]=next[P[k]];

link[pre[k]]=P[k];

步骤八,k减1,并将当前的P[k]添加到链表中,并取下一个节点为P[k],返回执行步骤四;

所述步骤五和步骤七中,所述判断当前第k行所有的列号是否均已试过具体包括:

判断当前k行所有的列号是否均已试过,判断flagrow[k]是否被置为1,没有被置位即表示还有列号未被尝试。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中农业大学,未经华中农业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910613016.2/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top