2012-06-08 7 views
0

Schnorr 식별 프로토콜을 구현 중입니다. 본인은 "적용된 암호화 핸드북"예제 10.37을 가지고 있습니다. 모든 것이 한 가지없이 작동합니다.BigInteger (ae + r) mod q 계산 방법

(p = 48731, q = 433, B = 11444) - public params. 
v = 7355 - public Key. 
a = 357 - privateKey. 
t = 8 - identification certanity, 

프로토콜 동작

그래서
A choses r = 274 and sends to B x = B^r mod p = 37123. 
B sends to A e (1 <=e <= 2^t), e = 129. 
A sends to B y = (ae + r) mod q. - this doesn't work. should be 255. 
B comutes z = ((B^y)(V^e)) mod p. if z == x then identity is ok. 

, 난 (AE + R) 개조 Q,해야 255 문제가 나는가 429 번호 :

BigInteger ae = a.multiply(e); 
ae = ae.mod(q); 
y = ae.add(r);  
y = y.mod(q); 

결과 Y = 429 계산할 경우

BigInteger ae = a.multiply(e); 
y = ae.add(r);  
y = y.mod(q); 

결과는 같습니다.

도와주세요. 감사합니다. .

+0

255를 제공해야한다는 것을 어떻게 알 수 있습니까? 나는 계산기로 계산을 실행했고 당신이 올린 값으로 429를 얻는다. 어떻게 그것이 255 일 수 있습니까? – Tudor

답변

0

q=433은 올바르지 않으므로 p-1의 제수 여야합니다. 올바른 값은 443입니다.

+0

네가 맞아, 나는 어리석은 실수를 저질렀다. 간단한 실수는 항상 찾기가 어렵습니다. 이제 작동합니다. 고맙습니다. :) –