背包算法加密
❶ 非对称加密和对称加密的区别
非对称加密和对称加密在加密和解密过程、加密解密速度、传输的安全性上都有所不同,具体介绍如下:
1、加密和解密过程不同
对称加密过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文。但非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密。
2、加密解密速度不同
对称加密解密的速度比较快,适合数据比较长时的使用。非对称加密和解密花费的时间长、速度相对较慢,只适合对少量数据的使用。
3、传输的安全性不同
对称加密的过程中无法确保密钥被安全传递,密文在传输过程中是可能被第三方截获的,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,安全性相对较低。
非对称加密算法中私钥是基于不同的算法生成不同的随机数,私钥通过一定的加密算法推导出公钥,但私钥到公钥的推导过程是单向的,也就是说公钥无法反推导出私钥。所以安全性较高。
❷ Merkle-Hellman背包算法的破解方法
背包加密是一种相当高级的加密方式,不容易破解,而且还原也相对容易,因此采用这种加密方式加密游戏数据也是非常好的,只要知道背包,就可以轻易算出来。
这么复杂的加密,怎么解密?有如下两中破解方法:1.利用孤立点破解;2.利用背包破解。所谓孤立点,还是以上面的背包为例子,我们可以把密码设为a,看看得到了什么密码?1,如果我们把密码设为b,得到的密码为2,同理,可以把背包里面的所有元素都利用孤立点的方法全部枚举出来,这样我们就把背包弄到手了,对下面的破解就不成问题了,是不是很简单?其实在加密的时候,也许它们会利用异或运算先加密一下,再利用背包加密,这样更难破,孤立点方法非常有效,但是不是万能的,要结合前面的方法配合使用!利用背包,这个就简单了,想一想,要加密也得有背包才能完成加密啊,要解密也要背包啊,这就是说,不管是用户端,还是服务器端,都会有该背包的,找到该背包不是就解决问题了吗?怎么找?大家可以稍微找一些书籍学习一下。首先是要了解进制,特别是十六进制、二进制和十进制及其之间的转换。这些加密方法在大学应该会接触的。
❸ 公钥加密的常见算法
RSA、ElGamal、背包算法、Rabin(Rabin的加密法可以说是RSA方法的特例)、Diffie-Hellman
(D-H)
密钥交换协议中的公钥加密算法、Elliptic
Curve
Cryptography(ECC,椭圆曲线加密算法)。使用最广泛的是RSA算法(由发明者Rivest、Shmir和Adleman姓氏首字母缩写而来)是着名的公开金钥加密算法,ElGamal是另一种常用的非对称加密算法。
❹ 非对称加密算法的主要算法
RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。
使用最广泛的是RSA算法,Elgamal是另一种常用的非对称加密算法。
Elgamal由Taher Elgamal于1985年发明,其基础是DiffieˉHellman密钥交换算法,后者使通信双方能通过公开通信来推导出只有他们知道的秘密密钥值[DiffieˉHellman]。DiffieˉHellman是Whitfield Diffie和Martin Hellman于1976年发明的,被视为第一种 非对称加密算法,DiffieˉHellman 与RSA的不同之处在于,DiffieˉHellman不是加密算法,它只是生成可用作对称密钥的秘密数值。在DiffieˉHellman密钥交换过程中,发送方和接收方分别生成一个秘密的随机数,并根据随机数推导出公开值,然后,双方再交换公开值。DiffieˉHellman算法的基础是具备生成共享密钥的能力。只要交换了公开值,双方就能使用自己的私有数和对方的公开值来生成对称密钥,称为共享密钥,对双方来说,该对称密钥是相同的,可以用于使用对称加密算法加密数据。
与RSA相比,DiffieˉHellman的优势之一是每次交换密钥时都使用一组新值,而使用RSA算法时,如果攻击者获得了私钥,那么他不仅能解密之前截获的消息,还能解密之后的所有消息。然而,RSA可以通过认证(如使用X.509数字证书)来防止中间人攻击,但Diff ieˉHellman在应对中间人攻击时非常脆弱。
❺ 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,84+2=86等等,你是无法知道的,所以,背包加密非常难破。
2、乘法背包:乘法背包比加法背包更复杂,不仅是运算量大了很多,更重要的是你得到的一个被加密了的数据更大,一般都是上亿的,而且在许多机密的机关里面,背包的数据都不是有这个单位,而是用位。我们知道,1<2,1*2<3,1*2*3<7,1*2*3*7<43,1*2*3*7*42<1765, 数字的增长还是很快的,之所以复杂,就是因为数字很大啊!背包的特点是:如果背包里面的数据按小到大排列,那么,前面所有数据的乘积小于后面的任何一个元素,这个就是背包的特点,是不是很简单,但是要知道乘积的数字的增长是非常快的!
❻ 背包算法为什么无法实现数字签名
数字签名采用了双重加密的方法来实现防伪、防赖。其原理为:
(1) 被发送文件用SHA编码加密产生128bit的数字摘要(见上节)。
(2) 发送方用自己的私用密钥对摘要再加密,这就形成了数字签名。
(3) 将原文和加密的摘要同时传给对方。
(4) 对方用发送方的公共密钥对摘要解密,同时对收到的文件用SHA编码加密产生又一摘要。
(5) 将解密后的摘要和收到的文件在接收方重新加密产生的摘要相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过。否则不然。
所谓"数字签名"就是通过某种密码运算生成一系列符号及代码组成电子密码进行签名,来代替书写签名或印章,对于这种电子式的签名还可进行技术验证,其验证的准确度是一般手工签名和图章的验证而无法比拟的。"数字签名"是目前电子商务、电子政务中应用最普遍、技术最成熟的、可操作性最强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。
数字签名在ISO7498-2标准中定义为:"附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造"。美国电子签名标准(DSS,FIPS186-2)对数字签名作了如下解释:"利用一套规则和一个参数对数据计算所得的结果,用此结果能够确认签名者的身份和数据的完整性"。按上述定义PKI(Public Key Infrastructino 公钥基础设施)提供可以提供数据单元的密码变换,并能使接收者判断数据来源及对数据进行验证。
❼ 试简要写出DES算法的加密过程。 什么是背包问题如何用背包问题构造公钥密码算法。
将64位明文经初始换位后,在密钥的参与下进行了16轮次非线性变换.
再进行和初始换位相逆的位置变换,便得出密文
背包问题简单说就是给定一堆物品,每种重量不同,然后将这些物品中的几种放入一个背包中使重量等于一个给定的值,这时求每种物品个数的时间会随着堆中物品的种数的增长呈几何指数增长。也就是说背包问题可看作一个单向函数。最初,公钥密码学理论的唯一实现途径是通过背包问题的,后来又有了更先进的数学模型,如大数分解、离开对数,椭圆曲线等等,而背包问题随着计算机速度的提高,在理论上已有点靠不住了,所以人们现在已慢慢放弃这一模型。
希望能帮到你~~~
❽ 什么是背包算法啊可以说的详细一点吗谢谢大家了```
该算法是根据数学上的背包问题设计的。背包问题是一个最优化问题,即对一个给定空间或负重的背包和许多大小不一的物体,哪些物体放入背包才能使得浪费的背包空间或负重最小?在背包很小和物体数目较少时,这个问题还比较容易解决;但当背包很大且有很多个物体时,问题的求解就十分困难。通常,这个问题会有一个或者多个解,也有可能根本没有解。
1977年,Merkle与Hellman合作设计了使用背包问题实现信息加密的方法。其工作原理是:假定甲想加密,则先产生一个较易求解的背包问题,并用它的解作为专用密钥;然后从这个问题出发,生成另一个难解的背包问题,并作为公共密钥。如果乙想向甲发送报文,乙就可以使用难解的背包问题对报文进行加密,由于这个问题十分难解,所以一般没有人能够破译密文;甲收到密文后,可以使用易解的专用密钥解密。
该算法提出以后,经过多年的探讨和研究,最终发现了它的一个致命错误,使之失去了任何保密的实用价值。
❾ 非对称加密的主要算法有哪些
非对称加密(公钥加密):指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。假设A用B的公钥加密消息,用A的私钥签名,B接到消息后,首先用A的公钥验证签名,确认后用自己的私钥解密消息。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得 十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以通过信息发送者的公钥来验证信息的来源是否真实,还可以通过数字签名确保发送者无法否认曾发送过该信息。