ModInverse() public method

public ModInverse ( BigInteger modulus ) : BigInteger
modulus BigInteger
return BigInteger
示例#1
0
文件: DSA.cs 项目: yiyi99/poderosa
        public void Verify(byte[] data, byte[] expecteddata)
        {
            byte[] first = new byte[data.Length / 2];
            byte[] second = new byte[data.Length / 2];
            Array.Copy(data, 0, first, 0, first.Length);
            Array.Copy(data, first.Length, second, 0, second.Length);
            BigInteger r = new BigInteger(first);
            BigInteger s = new BigInteger(second);

            BigInteger w = s.ModInverse(_q);
            BigInteger u1 = (new BigInteger(expecteddata) * w) % _q;
            BigInteger u2 = (r * w) % _q;
            BigInteger v = ((_g.ModPow(u1, _p) * _y.ModPow(u2, _p)) % _p) % _q;
            if (v != r)
                throw new VerifyException("Failed to verify");
        }