0

我正在实施 Schnorr 识别协议。我有一个来自“应用密码学手册”示例 10.37 的示例。没有一件事,一切都有效。

(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) mod 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);

结果是一样的。

请帮我。谢谢。

4

1 回答 1

0

q=433不正确,应该是 的除数p-1。正确值为 443。

于 2012-06-08T08:29:33.250 回答