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 に答える