当前位置: 首页>>代码示例>>C#>>正文


C# BigInteger.Mod方法代码示例

本文整理汇总了C#中BitcoinKit.BouncyCastle.Math.BigInteger.Mod方法的典型用法代码示例。如果您正苦于以下问题:C# BigInteger.Mod方法的具体用法?C# BigInteger.Mod怎么用?C# BigInteger.Mod使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在BitcoinKit.BouncyCastle.Math.BigInteger的用法示例。


在下文中一共展示了BigInteger.Mod方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: DecodeBlock

        /**
        * @exception InvalidCipherTextException if the decrypted block is not a valid ISO 9796 bit string
        */
        private byte[] DecodeBlock(
            byte[]	input,
            int		inOff,
            int		inLen)
        {
            byte[]  block = engine.ProcessBlock(input, inOff, inLen);
            int     r = 1;
            int     t = (bitSize + 13) / 16;

            BigInteger iS = new BigInteger(1, block);
            BigInteger iR;
            if (iS.Mod(Sixteen).Equals(Six))
            {
                iR = iS;
            }
            else
            {
                iR = modulus.Subtract(iS);

                if (!iR.Mod(Sixteen).Equals(Six))
                    throw new InvalidCipherTextException("resulting integer iS or (modulus - iS) is not congruent to 6 mod 16");
            }

            block = iR.ToByteArrayUnsigned();

            if ((block[block.Length - 1] & 0x0f) != 0x6)
                throw new InvalidCipherTextException("invalid forcing byte in block");

            block[block.Length - 1] =
                (byte)(((ushort)(block[block.Length - 1] & 0xff) >> 4)
                | ((inverse[(block[block.Length - 2] & 0xff) >> 4]) << 4));

            block[0] = (byte)((shadows[(uint) (block[1] & 0xff) >> 4] << 4)
                | shadows[block[1] & 0x0f]);

            bool boundaryFound = false;
            int boundary = 0;

            for (int i = block.Length - 1; i >= block.Length - 2 * t; i -= 2)
            {
                int val = ((shadows[(uint) (block[i] & 0xff) >> 4] << 4)
                    | shadows[block[i] & 0x0f]);

                if (((block[i - 1] ^ val) & 0xff) != 0)
                {
                    if (!boundaryFound)
                    {
                        boundaryFound = true;
                        r = (block[i - 1] ^ val) & 0xff;
                        boundary = i - 1;
                    }
                    else
                    {
                        throw new InvalidCipherTextException("invalid tsums in block");
                    }
                }
            }

            block[boundary] = 0;

            byte[] nblock = new byte[(block.Length - boundary) / 2];

            for (int i = 0; i < nblock.Length; i++)
            {
                nblock[i] = block[2 * i + boundary + 1];
            }

            padBits = r - 1;

            return nblock;
        }
开发者ID:bitcoinkit,项目名称:BitcoinKit-CSharp,代码行数:74,代码来源:ISO9796d1Encoding.cs

示例2: ChooseRandomPrime

        /// <summary>Choose a random prime value for use with RSA</summary>
        /// <param name="bitlength">the bit-length of the returned prime</param>
        /// <param name="e">the RSA public exponent</param>
        /// <returns>a prime p, with (p-1) relatively prime to e</returns>
        protected virtual BigInteger ChooseRandomPrime(int bitlength, BigInteger e)
        {
            for (;;)
            {
                BigInteger p = new BigInteger(bitlength, 1, param.Random);

                if (p.Mod(e).Equals(BigInteger.One))
                    continue;

                if (!p.IsProbablePrime(param.Certainty))
                    continue;

                if (!e.Gcd(p.Subtract(BigInteger.One)).Equals(BigInteger.One))
                    continue;

                return p;
            }
        }
开发者ID:bitcoinkit,项目名称:BitcoinKit-CSharp,代码行数:22,代码来源:RsaKeyPairGenerator.cs


注:本文中的BitcoinKit.BouncyCastle.Math.BigInteger.Mod方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。