本文整理汇总了C#中IBigInteger.ModPow方法的典型用法代码示例。如果您正苦于以下问题:C# IBigInteger.ModPow方法的具体用法?C# IBigInteger.ModPow怎么用?C# IBigInteger.ModPow使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IBigInteger
的用法示例。
在下文中一共展示了IBigInteger.ModPow方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CalculateAgreement
/**
* given a message from a given party and the corresponding public key
* calculate the next message in the agreement sequence. In this case
* this will represent the shared secret.
*/
public IBigInteger CalculateAgreement(DHPublicKeyParameters pub, IBigInteger message)
{
if (pub == null)
throw new ArgumentNullException("pub");
if (message == null)
throw new ArgumentNullException("message");
if (!pub.Parameters.Equals(_dhParams))
{
throw new ArgumentException("Diffie-Hellman public key has wrong parameters.");
}
var p = _dhParams.P;
return message.ModPow(_key.X, p).Multiply(pub.Y.ModPow(_privateValue, p)).Mod(p);
}
示例2: ProcessBlock
public IBigInteger ProcessBlock(
IBigInteger input)
{
if (key is RsaPrivateCrtKeyParameters)
{
//
// we have the extra factors, use the Chinese Remainder Theorem - the author
// wishes to express his thanks to Dirk Bonekaemper at rtsffm.com for
// advice regarding the expression of this.
//
RsaPrivateCrtKeyParameters crtKey = (RsaPrivateCrtKeyParameters)key;
IBigInteger p = crtKey.P;;
IBigInteger q = crtKey.Q;
IBigInteger dP = crtKey.DP;
IBigInteger dQ = crtKey.DQ;
IBigInteger qInv = crtKey.QInv;
IBigInteger mP, mQ, h, m;
// mP = ((input Mod p) ^ dP)) Mod p
mP = (input.Remainder(p)).ModPow(dP, p);
// mQ = ((input Mod q) ^ dQ)) Mod q
mQ = (input.Remainder(q)).ModPow(dQ, q);
// h = qInv * (mP - mQ) Mod p
h = mP.Subtract(mQ);
h = h.Multiply(qInv);
h = h.Mod(p); // Mod (in Java) returns the positive residual
// m = h * q + mQ
m = h.Multiply(q);
m = m.Add(mQ);
return m;
}
return input.ModPow(key.Exponent, key.Modulus);
}
示例3: CalculatePublicKey
private static IBigInteger CalculatePublicKey(IBigInteger p, IBigInteger g, IBigInteger x)
{
return g.ModPow(x, p);
}