密码学之公钥密码体系(1):背包算法
众所周知,公钥密码,又称非对称密码,比较常见的是基于以下三种数学难题的公钥密码体制;
- 大数因子分解难解性(RSA)
- 离散对数难解性(ElGamal)
- 椭圆曲线离散对数难解性(ECC)
1.背包算法
本次介绍的并不是以上三种类型的公钥密码体制,而是在公钥密码出现之前,就已经存在的公开密码加密算法:背包算法;
背包算法是由Merkle和Hellman开发的背包算法。只能用于加密,后来由Shamir将它改进,使之也能用于数字签名;
背包算法的安全性起源于背包难题,他是一个NP完全问题,但后来发现该算法并不安全,但是由于它证明了如何将NP完全问题用于公开秘钥密码学,因此,值得去学习。
下面介绍一下什么是背包算法:
描述:给定一个物品,每个重量不同,能否将这些物品中的几件放入一个背包中,使之等于一个给定的重量?
公式化描述:给定一系列值M1,M2,…,Mn,和一个S值&#x