0

私は (非常に) 単純な DSA 問題を与えられており、キーとその他の変数を既に見つけています。署名を検証するには、方程式を何らかの方法で変換する必要があります。

V = [( y^u1*h^u2 )mod p] mod q

BigInteger 操作に変換します。これはJavaでも可能ですか?これまでのところ、modPow を正常に使用してきましたが、これまでのすべての問題は次のような形式でした。

r.modPow(指数、モジュラス);

BigInteger を介して上記の式 (特に太字部分) を実行する方法がわかりません。それが可能かどうか疑問に思っています。誰にもアイデアはありますか?

BigInteger ができない場合、この方程式を Pari に通すにはどうすればよいでしょうか?

4

1 に答える 1

1

アイデンティティを使用する必要があるだけだと思います

(a*b) mod p == ((a mod p)*(b mod p)) mod p

したがって、y u1 × h u2 mod p を計算するには:

  1. を使用してy u1 mod p を計算しますmodPow
  2. を使用してh u2 mod p を計算しますmodPow
  3. ステップ 1 と 2 の結果を乗算します。
  4. ステップ 3 mod p の結果を減らします。

ステップ 4 が必要なのは、ステップ 1 と 2 の結果が乗算されて p より大きい値が生成される可能性があるためです。

于 2018-04-08T12:23:21.213 に答える