2012-02-05 19 views
0

私はMerkle Hellmanのナップザックを実装するJavaの問題に取り組んでいます。ウィキペディアのページはhttp://en.wikipedia.org/wiki/Merkle%E2%80%93Hellman_knapsack_cryptosystemです。Merkle Hellmanナップザック暗号

いくつかの簡単なサンプルデータでテストした後、一部のサンプルデータは成功し、残りのデータは正常ではありません。たとえば、 input = '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.である。しかし、それは間違っています!

私は何度もそれをチェックして、どのステップが自分のプロセスに間違っているかを見つけることができません。また、私が使用する数字はランダムでなければならないことを認識しています。ここでは、例を挙げたいだけです。

誰もがこれにいくつかの光を当てることができますか?

多くの感謝!

答えて

5

あなたのwは急増していません。

+1

これは、私にstackoverflowが実際どれくらいうまくいくかについてのいくつかの新しい洞察を与えました... –