コード例 #1
0
        /// <summary>
        ///     Step 2: Generate transport integer a where:
        ///         a = (g ^ secret) mod p
        /// </summary>
        /// <param name="secret"></param>
        /// <param name="diffieHellmanPublicKeystore">p and g</param>
        /// <returns></returns>
        public BigInteger GenerateTransport(int secret, DiffieHellmanPublicKeystore diffieHellmanPublicKeystore)
        {
            var raised = BigInteger.Pow(diffieHellmanPublicKeystore.G, secret);
            var result = raised % diffieHellmanPublicKeystore.P;

            return(result);
        }
コード例 #2
0
        /// <summary>
        ///     Step 3: Generate shared secret
        /// </summary>
        /// <param name="secret"></param>
        /// <param name="receivedTransport"></param>
        /// <param name="diffieHellmanPublicKeystore"></param>
        /// <returns></returns>
        public BigInteger GenerateSharedSecret(int secret, BigInteger receivedTransport, DiffieHellmanPublicKeystore diffieHellmanPublicKeystore)
        {
            var raised = BigInteger.Pow(receivedTransport, secret);
            var result = raised % diffieHellmanPublicKeystore.P;

            return(result);
        }