【发布时间】:2018-09-17 21:06:14
【问题描述】:
我遇到了一个(非常)简单的 DSA 问题,并且已经找到了关键和其他变量。为了验证签名,我需要以某种方式翻译方程式:
V = [(y^u1*h^u2)mod p] mod q
进入 BigInteger 操作。这在java上甚至可能吗?到目前为止,我一直在成功使用 modPow,但是到目前为止所有问题都在以下形式中:
r.modPow(指数, 模数);
我不知道如何通过 BigInteger 完成上述等式(尤其是粗体部分),我想知道这是否可能。有人有什么想法吗?
如果 BigInteger 做不到,我将如何将这个等式通过 Pari?
【问题讨论】:
-
要回答如何在 PARI/GP 中做到这一点,您只需
V = ((y^u1*h^u2) % p) % q。但是,这不会使用下面答案描述的优化。为此(仅当中间值很大时才需要,但我猜几乎总是更快),请尝试V = lift(Mod(y,p)^u1*Mod(h,p)^u2) % q。
标签: java encryption biginteger dsa pari