- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
简单例子例:A=(43,129,215,473,903,302,561,1165,697,1523),s=3231。由于3231=129+473+903+561+1165所以从A中找出的满足要求的数有129、473、903、561、1165。明文变化由背包问题构造公钥密码体制同样是要构造一个单向函数f,将x(1≤x≤2n-1)写成长为n的二元表示0…001,0…010,0…011,…,1…111,f(x)定义为A中所有ai的和,其中x的二元表示的第i位为1,即 f(1)=f(0…001)=an f(2)=f(0…010)=an-1 f(3)=f(0…011)=an-1+an … f(2n-1)=f(1…111)=a1+a2+…+an使用向量乘,有f(x)=A·Bx,其中Bx是将x的二元表示写成的列向量。简单例子A=(43,129,215,473,903,302,561,1165,697,1523)上例中f(364)=f(0101101100)=129+473+903+561+1165=3231,类似地可求出:f(609)=2942,f(686)=3584,f(32)=903,f(46)=3326,f(128)=215,f(261)=2817,f(44)=2629,f(648)=819。32=0000100000128=0010000000由f的定义可见,已知x很容易求f(x),但已知f(x)求x就是要解背包问题。密码体制举例例4.10A=(1,3,5,11,21,44,87,175,349,701)是一超递增背包向量,取k=1590,t=43,gcd(43,1590)=1,得B=(43,129,215,473,903,302,561,1165,697,1523)。t-1(mod1590)=37对1001100001加密:43+473+903+1523=2942对2942解密:37*2942=734解超递增背包:得1001100001网络工程系?背包体制和Rabin背包公钥密码算法由Merkle和Hellman提出一个基于组合数学中背包问题的公钥密码系统。这个背包系统称为MH背包问题。背包问题是这样的:已知有n个物品,它们的重量分别为a1,a2,…,an。现在有一个重量为b的背包,装有其中某些物品,问装的是哪些物品?即为求xi=0或1,i=1,2,…,n,使满足:算法复杂性理论已经证明:背包问题属于NP完备类,即是NP类问题中难度最大的一类,求解这一类问题还没有有效算法。所以,若要对NP问题求解,理论上只能采用穷举搜索,那么就需要对2n中所有可能进行穷举搜索(为什么?),这实际上是不可能完成的。以n=100为例:2100=1.27×1030,以每秒搜索107种方案的超高速计算机进行穷举,一年只能完成3.1536×1014次,如果完成所有的穷举则需要4.02×1015(年),这显然是不可能完成的。背包公钥密码算法需要注意的是,并非所有的背包问题都没有有效算法求解。如果序列a1,a2,…,an满足条件:,i=2,3,…,n
成立时,有多项式解法。这样的序列称为超递增序列。如1,3,6,13,27,52是一个超递增序列,而1,3,4,9,15,25则不是。超递增背包问题的解是容易找到的。将总质量与序列中最大的数比较,如果总质量小于这个数,则它不在背包中;如果总质量大于这个数,则它在背包中,用背包质量减去这个数,转向考查序列下一个最大的数,重复直到结束,如果总质量变为零,那么有一个解,否则无解。超递增背包例:考查总质量为70kg的一个背包,质量序列为:2,3,6,13,27,52。解:(1)最大的质量为52kg,小于70kg,所以52kg在背包中。(2)用70kg减掉52kg剩18kg,下一个质量27kg比18kg大,所以27kg不在背包中。(3)再下一个质量13kg小于18kg,所以13kg在背包中。(4)从18kg中减去13kg剩5kg,再下一个质量6kg比5kg大,所以6kg不在背包中。(5)继续这个过程将得出2kg和3kg都在背包中。因此,我们得到的解是110101。超递增背包举例超递增背包变化成MH背包MH背包公钥系统选的背包序列是由超递增序列进行以下变换得到的。设b1,b2,…,bn是超递增序列,选取k2bn,选择t和k互素,t-1为w(modk)的逆。作变换ak=tbk(modk),k=1,2,...,n.于是得
文档评论(0)