我遇到了(非常)简单的DSA问题,并且已经找到了密钥和其他变量。为了验证签名,我需要以某种方式翻译等式:
V = [( y ^ u1 * h ^ u2 )mod p] mod q
进入BigInteger操作。这在Java上甚至可能吗?到目前为止,我一直在成功使用modPow,但到目前为止所有问题都是以下形式出现的:
r.modPow(指数,模数);
我不知道如何通过BigInteger完成上述等式(特别是粗体部分),我想知道它是否可能。有没有人有任何想法?
如果BigInteger无法做到这一点,我将如何通过Pari表达这个等式?
答案 0 :(得分:1)
我认为你只需要使用
的身份(a*b) mod p == ((a mod p)*(b mod p)) mod p
所以计算y u1 ×h u2 mod p:
modPow
,modPow
,步骤4是必要的,因为步骤1和2的结果可以相乘以产生大于p的值。