2012-02-05 5 views
0

Merkle Hellman의 배낭을 구현하는 Java 문제에 대해 연구 중입니다. 위키 백과 페이지는 http://en.wikipedia.org/wiki/Merkle%E2%80%93Hellman_knapsack_cryptosystem입니다.Merkle Hellman 배낭 암호

몇 가지 간단한 샘플 데이터로 테스트 한 후에 일부는 성공한 반면 다른 일부는 성공한 데이터입니다. 예 : 입력 = '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

귀하의 승 인상감은 과장되지 않습니다.

+1

그게 stackoverflow 실제로 얼마나 잘 작동하는지 몇 가지 새로운 통찰력을 준 ... –