[发明专利]一种实现SM2密码体制的大整数求乘逆方法有效

专利信息
申请号: 201310281880.X 申请日: 2013-07-05
公开(公告)号: CN103389965A 公开(公告)日: 2013-11-13
发明(设计)人: 蒋声障;张登峰;余杭军 申请(专利权)人: 福建升腾资讯有限公司
主分类号: G06F17/11 分类号: G06F17/11
代理公司: 福州市鼓楼区京华专利事务所(普通合伙) 35212 代理人: 宋连梅
地址: 350000 福建省福州市仓山区金*** 国省代码: 福建;35
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 实现 sm2 密码 体制 整数 求乘逆 方法
【权利要求书】:

1.一种实现SM2密码体制的大整数求乘逆方法,其特征在于:包括:

整数寄存器:用于存储大整数a的值,且在一次求乘逆运算过程中,a的值保持不变;

模值寄存器:用于存储模值n,模值寄存器中的数据在SM2算法运算过程中保持不变;

方程系数寄存器一:用于存储方程一未知数系数的数据C1;

方程系数寄存器二:用于存储方程二未知数系数的数据C2;

方程常量寄存器一:用于存储方程一常量的数据V1;

方程常量寄存器二:用于存储方程二常量的数据V2;

移位数据寄存器:用于存储待右移的数据D;

计算连续比特0个数模块:用于计算移位数据寄存器的数据D以二进制表示时,从最低位开始连续比特0的位数k;

移位位数寄存器:用于存储所述位数k;

有限域移位模块:用于将二进制的所述数据D,依据所述位数k的值进行连续k次的右移1位运算;每次右移1位运算时,对二进制的所述数据D进行判断,当二进制的所述数据D最低位为0时,则将二进制的所述数据D的该次右移1位运算后的结果记为数据D1;当二进制的所述数据D的最低位为1时,则将二进制的所述数据D与二进制的所述模值n二者相加的和进行右移1位运算后的结果记为数据D1;且将第1至第k-1次的右移1位运算后所产生出的所述数据D1记为下一次右移1位运算的所述数据D;

移位结果寄存器:用于存储所述数据D1;

被加数寄存器:用于存储一被加数值ADD1;

加数寄存器:用于存储一加数值ADD2;

有限域加法模块:用于将被加数值ADD1与加数值ADD2相加;当ADD1+ADD2>=n时,将ADD1+ADD2-n的结果记为数据ADD;当ADD1+ADD2<n时,将ADD1+ADD2的结果记为数据ADD;

加法结果寄存器:用于存储所述数据ADD;

被减数寄存器:用于存储被减数值SUB1;

减数寄存器:用于存储减数值SUB2;

有限域减法模块:用于将被减数值SUB1与减数值SUB2相减;当SUB1>=SUB2时,将SUB1-SUB2的结果记为数据SUB;当SUB1<SUB2时,将n+SUB1-SUB2的结果记为数据SUB;

减法结果寄存器:用于存储所述数据SUB

方程系数比较模块:用于比较C1和C2的大小;当C1>=C2时,输出一表示TRUE的状态值bCmp;当C1<C2时,输出一表示FALSE的状态值bCmp;

系数比较结果寄存器:用于存储所述状态值bCmp;所述状态值bCmp仅表示TRUE或FALSE任一种;

分支判断模块:用于判断所述数据C1和所述数据C2两者于二进制表示中的低第2位的值;当所述数据C1的低第2位的值等于所述数据C2的低第2位的值时,输出一表示FALSE的状态值bAdd;当所述数据C1的低第2位的值不等于所述数据C2的低第2位的值时,输出一表示TRUE的状态值bAdd;

分支判断结果寄存器:用于存储所述状态值bAdd,所述状态值bAdd仅表示TRUE或FALSE任一种;

循环结束条件判断模块:用于判断循环运算结果;当所述数据C1=1,将所述数据V1记为所述大整数a的乘逆运算值r,且输出一表示TRUE的状态值bRoop;当所述数据C2=1,将所述数据V2记为所述大整数a的乘逆运算值r,且输出一表示TRUE的状态值bRoop;当所述数据C1和数据C2均不等于1时,输出一表示FALSE的状态值bRoop;

输出结果寄存器:用于存储乘逆运算值r;

循环结束条件判断结果寄存器:用于存储所述状态值bRoop,所述状态值bRoop仅表示TRUE或FALSE任一种;

方程一化简模块:用于化简所述数据C1,使所述数据C1转化为奇数;将所述数据C1输入至移位数据寄存器;先执行所述计算连续比特0个数模块,后执行所述有限域移位模块;将所述数据D1覆盖输入至方程系数寄存器一;将所述数据V1输入至移位数据寄存器;执行所述有限域移位模块;将所述数据D1覆盖输入至方程常量寄存器一;

方程二化简模块:用于化简所述数据C2,使所述数据C2转化为奇数;将所述数据C2输入至移位数据寄存器;先执行所述计算连续比特0个数模块,后执行所述有限域移位模块;将所述数据D1覆盖输入至方程系数寄存器一;将所述数据V1输入至移位数据寄存器;执行所述有限域移位模块;将所述数据D1覆盖输入至方程常量寄存器一;

输出模块:用于将所述输出结果寄存器中的乘逆运算值r输出;

该方法具体包括如下步骤:

步骤10、进行初始化;将所述模值n存储至所述模值寄存器;

步骤20、将大整数a存储至整数寄存器;

步骤30、将所述大整数a存储至所述方程系数寄存器一;将一数值1存储至所述方程常量寄存器一;将所述模值n存储至所述方程系数寄存器二;将一数值0存储至所述方程常量寄存器二;

步骤40、执行所述方程一化简模块;

步骤50、执行循环运算;执行所述循环结束条件判断模块;当循环结束条件判断结果寄存器中的状态值bRoop表示TRUE时,则终止循环,进入步骤60;当环结束条件判断结果寄存器中的状态值bRoop表示FALSE时,进入步骤51;

步骤51、执行所述方程系数比较模块;

步骤52、执行所述分支判断结果寄存器判断;当所述分支判断结果寄存器中的状态值bAdd表示TRUE时,进入步骤53;当所述分支判断结果寄存器中的状态值bAdd表示FALSE时,进入步骤54;

步骤53、将所述数据C1、数据C2分别输入至所述被加数寄存器、加数寄存器后,执行所述有限域加法模块;

当所述系数比较结果寄存器中的状态值bCmp表示TRUE时,将所述加法结果寄存器中的数据ADD覆盖输入至所述数据C1;

当所述系数比较结果寄存器中的状态值bCmp表示FALSE时,将所述加法结果寄存器中的数据ADD覆盖输入所述数据至C2;

将所述数据V1、数据V2分别输入至所述被加数寄存器、加数寄存器后,执行所述有限域加法模块;

当所述系数比较结果寄存器中的状态值bCmp表示TRUE时,将所述加法结果寄存器中的数据ADD覆盖输入至所述数据V1;

当所述系数比较结果寄存器中的状态值bCmp表示FALSE时,将所述加法结果寄存器中的数据ADD覆盖输入至所述数据V2;进入步骤55;

步骤54、当所述系数比较结果寄存器中的状态值bCmp表示TRUE时,将所述数据C1、数据C2分别输入至所述被减数寄存器、减数寄存器后,执行所述有限域减法模块;将所述减法结果寄存器中的数据SUB覆盖输入至所述数据C1;将所述数据V1、数据V2分别输入至所述被减数寄存器、减数寄存器后,执行所述有限域减法模块;将所述减法结果寄存器中的数据SUB覆盖输入至所述数据V1;进入步骤55;

当所述系数比较结果寄存器中的状态值bCmp表示FALSE时,将所述数据C2、数据C1分别输入至所述被减数寄存器、减数寄存器后,执行所述有限域减法模块;将所述减法结果寄存器中的数据SUB覆盖输入至所述数据C2;将所述数据V2、数据V1分别输入至所述被减数寄存器、减数寄存器后,执行有限域减法模块;将所述减法结果寄存器中的数据SUB覆盖输入至所述数据V2;进入步骤55;

步骤55、当所述系数比较结果寄存器中的状态值bCmp表示TRUE时,执行所述方程一化简模块,返回步骤50;

当所述系数比较结果寄存器中的状态值bCmp表示FALSE时,执行所述方程二化简模块,返回步骤50;

步骤60、执行所述输出模块。

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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