背包加密算法:密码学历史上的首个公钥加密算法及其原理详解
背包是我们存储物品的重要工具,在密码学中,背包加密算法是第一个通用公共密钥加密算法。尽管它不再用于实际应用中,但其在密码学史上的地位是不可磨灭的。让我们了解下面的背包算法。
背包算法简介
背包算法是由Ralph Merkle和Mertin Hellman于1978年开发的。这是第一个公认的公共密钥加密算法,开放了一个新的加密时代。背包算法的建议不仅为加密通信提供了新的解决方案,还为随后研究更安全的公共密钥算法奠定了基础。
背包算法原理
背包算法的核心是背包问题。在背包算法中,明文是项目的加载,该算法表示为二进制序列(1表示该项目已加载到背包中,而0表示未加载)。密文是所选项目的总重量,而键是背包问题中项目的重量顺序。
背包算法使用两个不同的背包权重序列,对于给定相同的值,解决方案相同。私钥是一个增量背包权重序列,这是一个易于解决的背包问题。公钥是无序的背包权重序列。与此序列相对应的背包问题很困难,并且不能在多项式时间内解决。
背包算法的步骤1。密钥生成的私钥生成
选择一个超嵌段序列,例如{1、2、4、8、16,...},作为私钥的一部分。
确定两个大码数P和Q,并计算其产品n = p * q。
选择一个小于φ(n)=(p-1) *(q-1)的数字e,以便e和φ(n)是共元的,即,它们最大的常见分裂为1。
产生公共钥匙
计算e的模ulusφ(n)的乘积逆d,也就是说,找到一个数字D,以使(d * e)%φ(n)= 1。
公钥是(n,e),私钥是(n,d)。
2。加密过程
将明文消息m转换为数字m,其中0≤m<n。
消息m使用公共密钥(n,e)进行加密,并计算密文C =(m^e)%n。
3。解密过程
使用私钥(n,d)对密码C进行解密,以计算解密的消息M'。
将解密的消息m'转换为原始明文消息。
背包算法优势和缺点的优势和缺点