计算机加密中带容差的最大公约数计算方法与流程

文档序号:17928146发布日期:2019-06-15 00:34阅读:355来源:国知局
计算机加密中带容差的最大公约数计算方法与流程

本发明涉及一种计算机加密技术,特别是一种计算机加密中带容差的最大公约数计算方法。



背景技术:

最大公约数是指两个或多个整数共有约数中最大的一个,计算两个整数的最大公约数问题是一个非常古老的问题,在古希腊与古代中国的著述中均有论述。求解最大公约数有多种方法,常见的有穷举法、辗转相除法(又称欧几里德算法)和辗转相减法(又称更相减损法)。

穷举法,是指从多个整数中的最小数开始由大到小的列举,直到找到公约数为止,找到的公约数即为最大公约数。穷举法简单粗暴,计算量大。

辗转相除法又称欧几里德算法,用来求两个正整数最大公约数的算法。由古希腊数学家欧几里德在其著作《theelements》中最早描述了这种算法,所以被命名为欧几里德算法。扩展欧几里德算法可用于rsa加密等领域。

辗转相减法又称更相减损法,是出自《九章算术》的一种求最大公约数的算法,它原本是为约分而设计,但它适用于任何需要求最大公约数的场合。《九章算术》是中国古代的数学专著,其中的“更相减损术”可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”

国内外对于最大公约数问题的研究集中于大数的最大公约数求解问题,主要应用于加密领域。与本文论述的设定容差条件下的最大公约数问题存在根本不同。本发明描述的是两个整数在一定模糊条件下的最大公约数问题的求解。



技术实现要素:

本发明的目的在于提供一种计算机加密中带容差的最大公约数计算方法,包括以下步骤:

步骤1,采用辗转相减的方法处理正整数a、b,其中被减数h=ha×a+hb×b,减数l=la×a+lb×b,辗转相减直至差值h-l≤(|ha-la|+|hb-lb|)×t时,调用递归函数hllh,ha、hb、la、lb分别是a、b的系数,t是容差;

步骤2,进入递归函数hllh(h,l,ha,hb,la,lb),计算符合条件的公约数g的集合;

步骤3,从符合条件的公约数g的集合中确定最大值gmax,gmax为设定条件下a与b的带容差的最大公约数。

采用上述方法,步骤2的具体过程为:

步骤21,设定递归结束条件,即|ha-la|>m或|hb-lb|>m;

步骤22,当|h-l|≤(|ha-la|+|hb-lb|)×t时,执行步骤23,否则执行步骤24;

步骤23,当|h-l|≤(|ha-la|+|hb-lb|)×t时,分情况进行讨论,计算符合条件的最大公约数g或进一步进行递归调用;

步骤24,当|h-l|>(|ha-la|+|hb-lb|)×t时,根据h与l的大小关系,确定下一步递归调用的格式。

步骤23分3种情况进行讨论:

(1)解方程-[(ha-la)×ta+(hb-lb)×tb]=h-l获得的整数ta、tb,|ta|≤t,|tb|≤t;令a=a+ta,b=b+tb,采用欧几里德算法求得a与b的最大公约数g;

(2)令nh=h,nl=l-h,nha=ha,nhb=hb,nla=la-ha,nlb=lb-hb,调用递归函数hllh(nh,nl,nha,nhb,nla,nlb);

(3)令nh=l,nl=h-l,nha=la,nhb=lb,nla=ha-la,nlb=hb-lb,调用递归函数hllh(nh,nl,nha,nhb,nla,nlb)。

步骤24相关步骤如下:

步骤241,比较h与l的关系,如果h≥l,执行步骤242,否则执行步骤243;

步骤242,令nh=l,nl=h-l,nha=la,nhb=lb,nla=ha-la,nlb=hb-lb,调用递归函数hllh(nh,nl,nha,nhb,nla,nlb);

步骤243,当h<l时,令nh=h,nl=l-h,nha=ha,nhb=hb,nla=la-ha,nlb=lb-hb,调用递归函数hllh(nh,nl,nha,nhb,nla,nlb)。

本发明提供了一种带容差的最大公约数的计算方法,可用于在设定容差上限为t、设定倍数上限为m时,计算任意正整数a与b之间的带容差的最大公约数。

下面结合说明书附图对本发明作进一步描述。

附图说明

图1为本发明的方法流程示意图。

图2为hllh递归函数的流程图。

具体实施方式

结合图1,一种计算机加密中带容差的最大公约数计算方法,包括以下步骤:

步骤1、采用辗转相减的方法处理正整数a、b(a>b),其中被减数h=ha×a+hb×b,减数l=la×a+lb×b,辗转相减直至差值h-l=(ha-la)×a+(hb-lb)×b<=(|ha-la|+|hb-lb|)×t时,调用递归函数hllh;

步骤2、进入递归函数hllh(h,l,ha,hb,la,lb),计算符合条件的公约数g的集合;

步骤21、如果|ha-la|>m或|hb-lb|>m,结束本次递归过程;

步骤22、比较|h-l|与(|ha-la|+|hb-lb|)×t的关系,当|h-l|<=(|ha-la|+|hb-lb|)×t时,执行步骤23,否则执行步骤24;

步骤23、当|h-l|<=(|ha-la|+|hb-lb|)×t时,分情况进行讨论,计算符合条件的最大公约数g或进一步进行递归调用;

步骤231、解方程-[(ha-la)×ta+(hb-lb)×tb]=h-l,其中h、l、ha、la、hb、lb已知,求整数ta、tb,|ta|<=t,|tb|<=t,a=a+ta,b=b+tb,进一步采用欧几里德算法求得a与b的最大公约数g;

步骤232、令nh=h,nl=l-h,nha=ha,nhb=hb,nla=la-ha,nlb=lb-hb,调用递归函数hllh(nh,nl,nha,nhb,nla,nlb);

步骤233、令nh=l,nl=h-l,nha=la,nhb=lb,nla=ha-la,nlb=hb-lb,调用递归函数hllh(nh,nl,nha,nhb,nla,nlb);

步骤24、当|h-l|>(|ha-la|+|hb-lb|)×t时,根据h与l的大小关系,确定下一步递归调用的格式;

步骤241、比较h与l的关系,如果h>=l,执行步骤242,否则执行步骤243;

步骤242、当h>=l时,令nh=l,nl=h-l,nha=la,nhb=lb,nla=ha-la,nlb=hb-lb,调用递归函数hllh(nh,nl,nha,nhb,nla,nlb);

步骤243、当h<l时,令nh=h,nl=l-h,nha=ha,nhb=hb,nla=la-ha,nlb=lb-hb,调用递归函数hllh(nh,nl,nha,nhb,nla,nlb);

步骤3、从符合条件的最大公约数g的集合中确定最大值gmax,即为设定条件下a与b的带容差的最大公约数。

下面结合实施例对本发明做进一步详细的描述:

实施例

令a=1645,b=693,设定容差上限t=10,设定倍数上限m=20。根据本专利公开的带容差的最大公约数的计算方法计算带容差的最大公约数gmax,其步骤具体如下:

步骤1、采用辗转相减的方法处理正整数a=1645、b=693(a>b),其中被减数h=ha×a+hb×b(其中ha=1,hb=0),减数l=la×a+lb×b(其中la=0,lb=1),

其中辗转相减直至差值h-l=(ha-la)×a+(hb-lb)×b<=(|ha-la|+|hb-lb|)×t时(其中ha=1,hb=-2,la=-2,lb=5,调用递归函数hllh;

具体辗转相减过程如下:

1645-693=952=1×a-1×b>(1+1)×t

952-693=259=1×a-2×b>(1+2)×t

693-259=434=3×b-1×a>(3+1)×t

434-259=175=5×b-2×a>(5+2)×t

259-175=84=3×a-7×b<(3+7)×t

步骤2、进入递归函数hllh(h=259,l=175,ha=1,hb=-2,la=-2,lb=5),计算符合条件的公约数g的集合;

步骤21、计算|ha-la|=3<m,|hb-lb|=7<m,继续执行本次递归过程;

步骤22、比较|h-l|=84与(|ha-la|+|hb-lb|)×t=100的关系,|h-l|<=(|ha-la|+|hb-lb|)×t时,执行步骤23;

步骤23、计算|h-l|=84,(|ha-la|+|hb-lb|)×t=100,|h-l|<(|ha-la|+|hb-lb|)×t,分情况进行讨论,计算符合条件的最大公约数g或进一步进行递归调用;

步骤231、解方程-[(ha-la)×ta+(hb-lb)×tb]=h-l,-[3×ta-7×tb]=84,采用穷举法求整数ta、tb,|ta|<=t,|tb|<=t,得ta=-7,tb=9,a=a+ta=1638,b=b+tb=702,g=234;

穷举过程如下:

ta=-10时,tb无整数解;

ta=-9时,tb无整数解;

ta=-8时,tb无整数解;

ta=-7时,tb=9,a=a+ta=1638,b=b+tb=702,根据欧几里德算法,a与b的最大公约数为234。

ta=-6时,tb无整数解;

ta=-5时,tb无整数解;

ta=-4时,tb无整数解;

ta=-3时,tb无整数解;

ta=-2时,tb无整数解;

ta=-1时,tb无整数解;

ta=0时,tb=12>t;

ta=1时,tb无整数解;

ta=2时,tb无整数解;

ta=3时,tb无整数解;

ta=4时,tb无整数解;

ta=5时,tb无整数解;

ta=6时,tb无整数解;

ta=7时,tb=15>t;

ta=8时,tb无整数解;

ta=9时,tb无整数解;

ta=10时,tb无整数解;

步骤232、令nh=h=259,nl=l-h=-84,nha=ha=1,nhb=hb=-2,nla=la-ha=-3,nlb=lb-hb=7,调用递归函数hllh(259,-84,1,-2,-3,7),未找到符合条件的最大公约数g;

步骤233、令nh=l=175,nl=h-l=84,nha=la=-2,nhb=lb=5,nla=ha-la=3,nlb=hb-lb=-7,调用递归函数hllh(175,84,-2,5,3,-7),找到符合条件的最大公约数137与87;

步骤3、从符合条件的公约数g的集合{234,137,87}中确定最大值gmax=234,即为设定条件下a与b的带容差的最大公约数。

递归函数hllh(h=259,l=-84,ha=1,hb=-2,la=-3,lb=7)的具体步骤如下:

步骤21、计算|ha-la|=4<m,|hb-lb|=9<m,继续执行本次递归过程;

步骤22、比较|h-l|=343与(|ha-la|+|hb-lb|)×t=130的关系,|h-l|>(|ha-la|+|hb-lb|)×t,执行步骤24;

步骤24、当|h-l|>(|ha-la|+|hb-lb|)×t时,根据h与l的大小关系,确定下一步递归调用的格式;

步骤241、比较h与l的关系,h=259,l=-84,h>=l,执行步骤242;

步骤242、当h>=l时,令nh=l=-84,nl=h-l=343,nha=la=-3,nhb=lb=7,nla=ha-la=4,nlb=hb-lb=-9,调用递归函数hllh(-84,343,-3,7,4,-9);

递归函数hllh(h=-84,l=343,ha=-3,hb=7,la=4,lb=-9)的具体步骤如下:

步骤21、计算|ha-la|=7<m,|hb-lb|=16<m,继续执行本次递归过程;

步骤22、比较|h-l|=427与(|ha-la|+|hb-lb|)×t=230的关系,|h-l|>(|ha-la|+|hb-lb|)×t,执行步骤24;

步骤24、当|h-l|>(|ha-la|+|hb-lb|)×t时,根据h与l的大小关系,确定下一步递归调用的格式;

步骤241、比较h与l的关系,h=-84,l=343,h<l,执行步骤243;

步骤243、当h<l时,令nh=h=-84,nl=l-h=427,nha=ha=-3,nhb=hb=7,nla=la-ha=7,nlb=lb-hb=-16,调用递归函数hllh(-84,427,-3,7,7,-16);

递归函数hllh(h=-84,l=427,ha=-3,hb=7,la=7,lb=-16)的具体步骤如下:

步骤21、计算|ha-la|=10<m,|hb-lb|=23>m,结束本次递归过程;

递归函数hllh(h=175,l=84,ha=-2,hb=5,la=3,lb=-7)的具体步骤如下:

步骤21、计算|ha-la|=5<m,|hb-lb|=12<m,继续执行本次递归过程;

步骤22、比较|h-l|=91与(|ha-la|+|hb-lb|)×t=170的关系,|h-l|<(|ha-la|+|hb-lb|)×t,执行步骤23;

步骤23、计算|h-l|=91,(|ha-la|+|hb-lb|)×t=170,|h-l|<(|ha-la|+|hb-lb|)×t,分情况进行讨论,计算符合条件的最大公约数g或进一步进行递归调用;

步骤231、解方程-[(ha-la)×ta+(hb-lb)×tb]=h-l,-[-5×ta+12×tb]=91,采用穷举法求整数ta、tb,|ta|<=t,|tb|<=t,得ta=-1,tb=8,a=a+ta=1644,b=b+tb=685,g=137;

穷举过程如下:

ta=-10时,tb无整数解;

ta=-9时,tb无整数解;

ta=-8时,tb无整数解;

ta=-7时,tb无整数解;

ta=-6时,tb无整数解;

ta=-5时,tb无整数解;

ta=-4时,tb无整数解;

ta=-3时,tb无整数解;

ta=-2时,tb无整数解;

ta=-1时,tb=-8<t,a=a+ta=1644,b=b+tb=685,根据欧几里德算法,a与b的最大公约数为137。

ta=0时,tb无整数解;

ta=1时,tb无整数解;

ta=2时,tb无整数解;

ta=3时,tb无整数解;

ta=4时,tb无整数解;

ta=5时,tb无整数解;

ta=6时,tb无整数解;

ta=7时,tb无整数解;

ta=8时,tb无整数解;

ta=9时,tb无整数解;

ta=10时,tb无整数解;

步骤232、令nh=h=175,nl=l-h=-91,nha=ha=-2,nhb=hb=5,nla=la-ha=5,nlb=lb-hb=-12,调用递归函数hllh(175,-91,-2,5,5,-12);

步骤233、令nh=l=84,nl=h-l=91,nha=la=3,nhb=lb=-7,nla=ha-la=-5,nlb=hb-lb=12,调用递归函数hllh(84,91,3,-7,-5,12);

递归函数hllh(h=175,l=-91,ha=-2,hb=5,la=5,lb=-12)的具体步骤如下:

步骤21、计算|ha-la|=7<m,|hb-lb|=17<m,继续执行本次递归过程;

步骤22、比较|h-l|=266与(|ha-la|+|hb-lb|)×t=240的关系,|h-l|>(|ha-la|+|hb-lb|)×t,执行步骤24;

步骤24、当|h-l|>(|ha-la|+|hb-lb|)×t时,根据h与l的大小关系,确定下一步递归调用的格式;

步骤241、比较h与l的关系,h=175,l=-91,h>l,执行步骤242;

步骤242、当h>=l时,令nh=l=-91,nl=h-l=266,nha=la=5,nhb=lb=-12,nla=ha-la=-7,nlb=hb-lb=17,调用递归函数hllh(-91,266,5,-12,-7,17);

递归函数hllh(h=-91,l=266,ha=5,hb=-12,la=-7,lb=17)的具体步骤如下:

步骤21、计算|ha-la|=12<m,|hb-lb|=31>m,结束本次递归过程;

递归函数hllh(h=84,l=91,ha=3,hb=-7,la=-5,lb=12)的具体步骤如下:

步骤21、计算|ha-la|=8<m,|hb-lb|=19<m,继续执行本次递归过程;

步骤22、比较|h-l|=7与(|ha-la|+|hb-lb|)×t=270的关系,|h-l|<(|ha-la|+|hb-lb|)×t,执行步骤23;

步骤23、计算|h-l|=7,(|ha-la|+|hb-lb|)×t=270,|h-l|<(|ha-la|+|hb-lb|)×t,分情况进行讨论,计算符合条件的最大公约数g或进一步进行递归调用;

步骤231、解方程-[(ha-la)×ta+(hb-lb)×tb]=h-l,-[8×ta-19×tb]=-7,采用穷举法求整数ta、tb,|ta|<=t,|tb|<=t,得ta=8,tb=3,a=a+ta=1653,b=b+tb=696,g=87;

穷举过程如下:

ta=-10时,tb无整数解;

ta=-9时,tb无整数解;

ta=-8时,tb无整数解;

ta=-7时,tb无整数解;

ta=-6时,tb无整数解;

ta=-5时,tb无整数解;

ta=-4时,tb无整数解;

ta=-3时,tb无整数解;

ta=-2时,tb无整数解;

ta=-1时,tb无整数解;

ta=0时,tb无整数解;

ta=1时,tb无整数解;

ta=2时,tb无整数解;

ta=3时,tb=8<t,a=a+ta=1653,b=b+tb=696,根据欧几里德算法,a与b的最大公约数为87。

ta=4时,tb无整数解;

ta=5时,tb无整数解;

ta=6时,tb无整数解;

ta=7时,tb无整数解;

ta=8时,tb无整数解;

ta=9时,tb无整数解;

ta=10时,tb无整数解;

hllh(h=84,l=91,ha=3,hb=-7,la=-5,lb=12)

步骤232、令nh=h=84,nl=l-h=7,nha=ha=3,nhb=hb=-7,nla=la-ha=-8,nlb=lb-hb=19,调用递归函数hllh(84,7,3,-7,-8,19);

步骤233、令nh=l=91,nl=h-l=-7,nha=la=-5,nhb=lb=12,nla=ha-la=8,nlb=hb-lb=-19,调用递归函数hllh(91,-7,-5,12,8,-19);

递归函数hllh(h=84,l=7,ha=3,hb=-7,la=-8,lb=19)的具体步骤如下:

步骤21、计算|ha-la|=11<m,|hb-lb|=26>m,结束本次递归过程;

递归函数hllh(h=91,l=-7,ha=-5,hb=12,la=8,lb=-19)的具体步骤如下:

步骤21、计算|ha-la|=12<m,|hb-lb|=31>m,结束本次递归过程。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1