转自:http://baike.baidu.com/view/3416519.htm
1977年,Merkle与Hellman合作设计了使用背包问题实现信息加密的方法。其工作原理是:假定甲想加密,则先产生一个较易求解的背包问题,并用它的解作为专用密钥;然后从这个问题出发,生成另一个难解的背包问题,并作为公共密钥。如果乙想向甲发送报文,乙就可以使用难解的背包问题对报文进行加密,由于这个问题十分难解,所以一般没有人能够破译密文;甲收到密文后,可以使用易解的专用密钥解密。
但是,在它发表几年后,就找到了攻破它的方法。即使如此,它仍然代表着一类很难问题的算法。
分类
背包加密分为加法背包和乘法背包。 1、加法背包:我们知道,1<2,1+2<4,1+2+4<8,1+2+4+8<16,……,那么如果我们选择这样一些数,这些数从小到大排列,如果前面所有的数加起来的值总小于后面的数,那么这些数就可以构成一个背包,我们给一个这个背包里面的某些数的和,这个数就是被加密的数,由这个背包组成这个数只有一种组合方式,这个方式就是秘密了,例如给大家一个封包(2,3,6,12,24,48),由这个背包里的某些数构成的数:86,你知道86怎么来的吗?当然,你看着背包里面的内容,可以知道是由2+12+24+48得到的,如果你没有这个背包,而是直接得到这个86,你知道组成这个86的最小的数是多少吗?你无法知道,因为加起来等于86的数非常多:85+1=86,82+2=86等等,你是无法知道的,所以,背包加密非常难破。 2、乘法背包:乘法背包比加法背包更复杂,不仅是运算量大了很多,更重要的是你得到的一个被加密了的数据更大,一般都是上亿的,而且在许多机密的机关里面,背包的数据都不是有这个单位,而是用位。我们知道,1<2,1+2<3,1*2*3<7,1*2*3*7<43,1*2*3*7*42<1683, 数字的增长还是很快的,之所以复杂,就是因为数字很大啊!背包的特点是:如果背包里面的数据按小到大排列,那么,前面所有数据的乘积小于后面的任何一个元素,这个就是背包的特点,是不是很简单,但是要知道乘积的数字的增长是非常快的!
破解方法
背包加密是一中相当高级的加密方式,不容易破解,而且还原也相对容易,因此采用这种加密方式加密游戏数据也是非常好的,只要知道背包,就可以轻易算出来。 这么复杂的加密,怎么解密?有如下两中破解方法: 1.利用孤立点破解;2.利用背包破解。 所谓孤立点,还是以上面的背包为例子,我们可以把密码设为a,看看得到了什么密码?1,如果我们把密码设为b,得到的密码为2,同理,可以把背包里面的所有元素都利用孤立点的方法全部枚举出来,这样我们就把背包弄到手了,对下面的破解就不成问题了,是不是很简单?其实在加密的时候,也许它们回利用异或运算先加密一下,再利用背包加密,这样更难破,孤立点方法非常有效,但是不是万能的,要结合前面的方法配合使用! 利用背包,这个就简单了,想一想,要加密也的有背包才能完成加密啊,要解密也要背包啊,这就是说,不管是用户端,还是服务器端,都会有该背包的,找到该背包不是就解决问题了吗?怎么找?大家可以稍微找一些书籍学习一下。首先是要了解进制,特别是十六进制、二进制和十进制及其之间的转换。这些加密方法在大学应该会接触的。
应用领域
很多数据都需要加密,例如银行的数据、网络游戏、军事机构、行政机构以及其他重要场所。不过虽然这种加密效果非常好,但是加密的程度太大也不现实,一般不会有非常复杂的加密,如果一个数据就几百位,而且还用非常规进制,那么可以想象电脑要算多久啊,会多么影响速度啊!
分享到:
相关推荐
包含c实现的Merkle-Hellman背包公钥密码加解密的源代码, 在vs08下实现
ASCII明文背包加密算法,按照书上的例子自己写的
使用 Merkle-Hellman 加密的 nodejs 聊天。 为加密课程而写
Merkle – Hellman 加密系统 在教授的离散结构课程的最终项目。 该项目的目标是为了教育目的用实现。 有关更多信息,您可以查阅正式描述该项目文档。 汇编 src $ make cc -lm -pedantic -ansi -c -o comun.o comun...
开源项目-keybase-go-merkle-tree.zip,keybase/go-merkle-tree: keybase's sitewide merkle tree.
前端开源库-merkle-tree-stream.zip
前端开源库-merkle-tree-streamMerkle树流,一种基于输入数据生成Merkle树的流。
再次探讨Merkle-Damgård哈希函数的伪随机预言
Diffie-Hellman-Merkle 密钥交换演示Diffie Hellman Merkle (DH) 密钥交换是建立传输层安全性 (TLS) 连接的关键组件。 在 DH 密钥交换结束时,两方将就用于加密和解密数据的对称密钥达成一致。 在实现 TLS 时,理解...
npm run generate-merkle-root -- --input input.csv --network <kovan> --description 'Short distribution description' # Verify that the merkle path are correct and match the root npm run verify-merkle-...
资源来自pypi官网。 资源全名:merkle-tree-stream-0.0.1a4.tar.gz
前端开源库-merkle-libmerkle lib,一个性能敏感的库,用于merkle根和树计算。
20230925-Merkle-指数报告:2023B2B品牌体验.pdf
使用Merkle-CRDT的分布式实现。 go-ds-crdt是使用Merkle CRDT的键值存储实现,如。 它满足go-datastore的和接口。 在内部,它使用delta-CRDT Add-Wins Observed-Removed集。 密钥的当前值是优先级最高的密钥。 ...
Merkle-Q3消费者参与报告(英文)--29页.pdf
基于改进Merkle-Tree认证方法的可验证多关键词搜索方案.docx
Merkle-虚拟个性化和网络消费体验(英文)-2020.2-58页.rar
Merkle-2019年Q3消费者参与报告(英文)-2019.10-29页.rar
Merkle-2019年第四季度网络营销报告(英文)-2020.2-28页.rar
Merkle-2019年第四季度网络营销报告(英文)-2020.2-28页.pdf