将背包算法的输出限制为指定的位大小

时间:2017-03-29 01:50:06

标签: algorithm encryption cryptography

目前,我的教授已经进行了一项小组分配,要求我们从模拟心电图扫描中获取值并将它们量化为8位值。从那里我们将采用8位值并通过背包加密算法运行它们。

我对编码没有任何问题,而是背包本身的问题。

我们正在使用超级增长键来创建我们的通用密钥。我们应该提出SIK,m和n值。在这种情况下,我选择{1,2,5,9,22,43,118,207}作为我的SIK,因为我们只使用8位。另外,我的n = 19,而我的m = 511(即19 *(无论如何)mod511)。

这将生成生成的通用背包: {19,38,95,171,418,306,198,356}

当我加密一个值时出现问题。假设我加密像10010111这样的东西 结果值为1050(十进制)。将此值放回我的量化器将是一个问题,考虑到它被设计为将十进制值转换为8位二进制,并且这给出了一个10位数。

所以我玩了一下这些值,将SIK改为可能的最小值和m和n的不同变化,但仍然得到大于8位的加密值。

基本上我的问题是:我可以使用m和n的值,它会在所需的位范围(8位)中生成值,还是在数学上不可能?教授说他不确定是否有可能,但他认为是。

我可以将量化器转换为能够占用更多的比特,但只是想知道他所问的内容是否可能。

1 个答案:

答案 0 :(得分:1)

" 我可以使用m和n的值来生成所需位范围(8位)的值,还是在数学上不可能?&#34 ;

无法证明这是不可能的,但我会从实际的角度说,它不会起作用。这就是原因。

由于超级增加的属性,每个元素至少是前一个的两倍意味着第8个元素必须是> = 2 ^ 8 = 256.因此,你的模数m需要更大比256,即9位。

现在要使其工作,您需要找到n的值,使得生成的背包的任何子集总和最多为8位(255是最大值)。最糟糕的情况是11111111,其中所有数字加在一起。生成的背包中的元素与模数的顺序相同,至少为9位。因此,您正在考虑添加8个仅为9位的元素,希望总和为8位。没错,我还没有证明这是不可能的,但我希望它能让你感觉到为什么不可能发生这种情况。