簡體   English   中英

DSA簽名驗證和BigInteger類

[英]DSA Signature Verification and BigInteger class

給我一個(非常簡單的)DSA問題,並且已經找到了關鍵和其他變量。 為了驗證簽名,我需要以某種方式轉換方程式:

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

進入BigInteger操作。 在Java上甚至有可能嗎? 到目前為止,我一直在成功使用modPow,但是到目前為止,所有問題都以以下形式出現:

r.modPow(指數,模數);

我不知道如何通過BigInteger做上述方程式(尤其是粗體部分),我想知道是否有可能。 有人有什么想法嗎?

如果BigInteger無法做到,我該如何通過Pari來解決這個問題?

我認為您只需要使用以下身份即可

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

因此要計算y u1 ×h u2 mod p:

  1. 使用modPow計算y u1 mod p,
  2. 使用modPow計算h u2 mod p,
  3. 將步驟1和2的結果相乘
  4. 減少步驟3 mod p的結果。

步驟4是必需的,因為步驟1和2的結果可能會相乘以產生大於p的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM