[发明专利]一种快速的适用于嵌入式系统的大数求模方法无效
申请号: | 201210265638.9 | 申请日: | 2012-07-28 |
公开(公告)号: | CN103577153A | 公开(公告)日: | 2014-02-12 |
发明(设计)人: | 王妍丹;温伟;陈泓 | 申请(专利权)人: | 王妍丹;温伟;陈泓 |
主分类号: | G06F7/72 | 分类号: | G06F7/72 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 102206 北京市昌平*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 快速 适用于 嵌入式 系统 大数 方法 | ||
技术领域
本发明涉及大数求模在嵌入式系统中的快速实现,属于嵌入式系统数据处理领域。
背景技术
大数运算在数字信息处理中频繁应用,如加密算法为了保证信息安全便大量采用了大数运算,其中大数求模便是大数运算中的一种。如RSA加密算法的密钥生成便使用了大数求模。但是,目前处理器能力有限,支持的最大整数位宽有限,特别是嵌入式处理器,常见位宽是32位,无法直接实现超过32位位宽的大数求模运算。为了在有限位宽的处理器上实现大数求模,存在若干传统解决方案,本发明为一种新的大数求模方法。
发明内容
本发明所要解决的技术问题是提供一种快速的适用于嵌入式系统的大数求模方法。
本发明的技术问题通过以下技术手段予以解决:
一种快速的适用于嵌入式系统的大数求模方法,包括如下三个步骤:
一、先将大数拆分为高低位段;
二、对高位段进行求模;
三、重复步骤一和步骤二,直到大数位宽缩减到有效位宽后,完成最后的直接求模。
优选地:
所述步骤一包括以下步骤:将大数x拆成高低位段两部分,高位段用xH表示,低位段用xL表示,高位段位宽为n,低位段位宽为m,则x = (xH<<m)+ xL,“<<”代表左移。
对大数x高位段xH进行求模,低位段保持不变。
与现有技术相比,本发明具有以下有益效果:支持任意位宽的大数求模,运算速度快且节约硬件资源,适用于嵌入式系统。
附图说明
图1是快速大数求模方法流程图;
图2(a)和2(b)是大数比特示意图。
具体实施方式
下面对照附图并结合优选的实施方式对本发明作进一步说明。
设x和y分别为a位宽和b位宽的正整数,其中b小于嵌入式处理器的整数位宽,假设该位宽为n bit,即b<n,那么y可以用该嵌入式系统编译器下的整型表示。在大数应用用,a一般远大于b,显然a不能被编译器下的整型数表示,一般地,a以整型数组存储。大数x对y求模 (x%y)的具体实施方法如下,其流程图如图1所示:
(1)将x拆成高低位两部分,高位用xH表示,低位用xL表示,高位位宽为n,低位位宽为m,显然a=m+n,示意图如图2(a),图中x = (xH<<m)+ xL,“<<”代表左移。
(2)依据原理
(a+b) mod n = ((a mod n)+(b mod n))mod n
本发明进行了如下推演:
x%y
= [(xH<<m)+ xL]%y
= [(xH<<m)%y + xL%y]%y
= {[ (xH%y) <<m] %y+ xL%y}%y
={[ (xH%y) <<m]+ xL}%y
设x’ = [ (xH%y) <<m] + xL
则x%y = x’%y
经观察发现,x’是仅对x高位段求模而低位段保持不变后的结果,x’的比特示意图如图2(b)。
由于y的位宽b小于n,所以x高位段求模后所占位宽将小于b,因此x’的位宽比x至少减少了n-b ,而b<n,因此本步骤一定会将一个大数求模问题等价转换为另一个更小位宽的大数求模问题;
(3)用x’替换x重复步骤(1),直到x的有效位宽小于n,由于嵌入式处理器支持n位整型,因此可直接进行x%y的求余计算,即得到最终结果。
本说明书以一个具体的大数对7求模为例,阐述本发明的具体实施方案,在本例中,嵌入式处理器整型最大位宽是32bit:
(1)该大数为512bit的大数x,表示成16进制形式如下:
e7 77 41 69 b4 d4 76 a0 f6 57 32 0b d3 63 78 98
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于王妍丹;温伟;陈泓,未经王妍丹;温伟;陈泓许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210265638.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:深水采矿环形管道提升输送装置
- 下一篇:LED面板抓取机械手