如果我知道 parameter a
,k
那么p
如何在 C# 中计算它?
s=a*k^-1 mod p
它用于加密目的,我是新手。如果问题不恰当,请不要感到被冒犯。
请注意,它k^-1
是模逆运算符,k (mod p)
而不是幂运算符。
如果我知道 parameter a
,k
那么p
如何在 C# 中计算它?
s=a*k^-1 mod p
它用于加密目的,我是新手。如果问题不恰当,请不要感到被冒犯。
请注意,它k^-1
是模逆运算符,k (mod p)
而不是幂运算符。
由于问题是关于模逆的,我认为寻找另一个SO question将使寻求者受益。
答案的关键是——
Net 4.0+ 使用特殊的模运算函数 ModPow 实现 BigInteger(它产生“X power Y modulo Z”),您不需要第三方库来模拟 ModInverse。如果 m 是素数,您需要做的就是计算:
根据MSDN 文档,在 C# 中,这被定义为
public static BigInteger ModPow(
BigInteger value,
BigInteger exponent,
BigInteger modulus
)
使用它,我们可以做一些类似计算 k 模 p 的倒数的事情
BigInteger bi= ModPow(k, -1, p );
int b= (int) bi;
s= (a* bi )%p;
公共静态双DoMath(双a,双k,双p)
{
return (a * Math.Pow(k, -1)) % p;
}