深入解析背包密码体制:从 MH 背包问题到加密算法原理

日期: 2024-08-11 21:10:56|浏览: 592|编号: 60428

友情提醒:信息内容由网友发布,本站并不对内容真实性负责,请自鉴内容真实性。

1.背包密码系统简介

当我们谈论背包密码体制时,我们首先会思考这个密码体制为什么和背包有什么关系。背包这个词来自于作者在1978年提出的MH背包问题。这个问题的大意是,有很多不同重量的物品,可以从中任意选取n件物品放入一个背包中。背包中物品的总重量和物品堆放情况是公开的;但是,所选物品的种类是不会公开的。针对这个问题,作者和合著者设计了一种利用背包问题来加密信息的方法。由于加密算法涉及到背包问题,背包密码因此得名。

2.背包加密算法原理

背包加密算法的整体思想是这样的:如果A要发送一个消息,A首先要有一个私钥,这个密钥是通过背包问题传递的。私钥可以产生公钥,发送消息前必须用公钥加密。消息的合法接收者使用私钥和其他已知信息解密。这就是背包加密算法的整体思想。

3.背包加密算法步骤3.1:构造递增序列背包

背包问题中,如果物品重量列表是一个超递增序列,这个问题很容易解答。解决超递增序列背包问题有几个步骤:假设有一个背包,且已知背包的重量。将背包的重量与已知的超递增序列中的最大值进行比较,如果背包的重量小于这个数,那么这个数不在背包中,如果重量大于等于这个数,那么这个数在背包中。用背包的重量减去这个数,继续将结果与序列中的下一个数进行比较,重复比较,直到比较完成。如果背包总重量减为0,那么背包问题就解决了,否则无解。

3.2 根据私钥构造公钥

3.3 使用公钥加密

通过私钥构造公钥,当我们得到公钥之后,就开始使用公钥对数据进行加密。假如我们得到一个二进制数据,背包加密算法加密这个二进制数据的主要过程为:

3.4 解密

4 背包密码体制的实现 4.1 由私钥构造公钥

def create_pubkey(data):
    # 构造m   此时m应大于超递增序列的所有和
    # m = sum(data) + 2
    # m = 250
    m =

提醒:请联系我时一定说明是从101箱包皮具网上看到的!