Encryption Merkle-Hellman背包密码体制

Encryption Merkle-Hellman背包密码体制,encryption,Encryption,我正在研究一个实现Merkle Hellman背包的java问题。维基百科页面是 在使用一些简单的样本数据进行测试后,其中一些是成功的,而另一些则不是。例如 输入='f';(01100110) 加密: w = ( 1,2,4,7,12,20,33,54) r = 147 q = 250 b = (147,44,88,29,14,190,101,188) r-1(reverse) = 233 (r*r-1 mod q =1) The cryptogram is therefore

我正在研究一个实现Merkle Hellman背包的java问题。维基百科页面是

在使用一些简单的样本数据进行测试后,其中一些是成功的,而另一些则不是。例如 输入='f';(01100110)

加密:

w = ( 1,2,4,7,12,20,33,54)

r = 147 

q = 250

b = (147,44,88,29,14,190,101,188)

r-1(reverse) = 233    (r*r-1 mod q =1)

The cryptogram is therefore 423 (=44+88+190+101)

Decryption:

Then 423 * 233 mod 250 = 59

59-54=5
5-4=1
1-1=0
结果是10100001。但这是错误的

我已经检查过很多次了,只是找不到我的流程中哪一步是错误的。另外,我知道我使用的数字应该是随机的。这里,我只想举个例子

有人能解释一下吗


非常感谢

您的w不是超增量。

您的w不是超增量。

Merkle Hellman有一些条件,您应该遵循这些条件,以便输出正确,如下所示:

  • 简单的背包必须是超递增的
  • 重量(乘数)的值必须大于简单背包的总和
  • 模量和重量值不得具有公共因子

  • Merkle Hellman有一些条件,为了使输出正确,您应该遵循这些条件:

  • 简单的背包必须是超递增的
  • 重量(乘数)的值必须大于简单背包的总和
  • 模量和重量值不得具有公共因子