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


C# MD5CryptoServiceProvider.CopyTo方法代码示例

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


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

示例1: InitPackage

        public void InitPackage()
        {
            //生成Pre_Master_Secret
            byte[] _preMasterSecret = new byte[48];
            _preMasterSecret[0] = 3;
            _preMasterSecret[1] = 1;
            byte[] randomBytes = new byte[46];
            Random random = new Random();
            random.NextBytes(randomBytes);
            Array.Copy(randomBytes, 0, _preMasterSecret, 2, randomBytes.Length);
            //生成Master_Secret
            App.MasterSecret = Prf10.GenerateBytes(_preMasterSecret, "master secret", App.ClientHelloAndServerHelloRandom, 48);

            csTwo.ClientKeyExchangeBase.ContentType = 22;
            csTwo.ClientKeyExchangeBase.Version[0] = 3;
            csTwo.ClientKeyExchangeBase.Version[1] = 1;
            csTwo.ClientKeyExchangeBase.Length[0] = 1;
            csTwo.ClientKeyExchangeBase.Length[1] = 6;
            csTwo.ClientKeyExchange.HandshakeType = 16;
            csTwo.ClientKeyExchange.Length[0] = 0;
            csTwo.ClientKeyExchange.Length[1] = 1;
            csTwo.ClientKeyExchange.Length[2] = 2;
            csTwo.ClientKeyExchange.EncryptedPreMasterlength[0] = 1;
            csTwo.ClientKeyExchange.EncryptedPreMasterlength[1] = 0;
            var rsa = (RSACryptoServiceProvider)App.PublicKey.Key;
            csTwo.ClientKeyExchange.EncryptedPreMaster = rsa.Encrypt(_preMasterSecret, false);
            csTwo.ChangeCipherSpecBase.ContentType = 20;
            csTwo.ChangeCipherSpecBase.Version[0] = 3;
            csTwo.ChangeCipherSpecBase.Version[1] = 1;
            csTwo.ChangeCipherSpecBase.Length[0] = 0;
            csTwo.ChangeCipherSpecBase.Length[1] = 1;
            csTwo.ChangeCipherSpecMessage = 1;

            csTwo.EncryptedHandshakeMessageBase.ContentType = 22;
            csTwo.EncryptedHandshakeMessageBase.Version[0] = 3;
            csTwo.EncryptedHandshakeMessageBase.Version[1] = 1;

            App.HandshakeMessage = new byte[App.C_SOneArray.Length - 5 + App.S_COneArray.Length - 5 + 262];
            Array.Copy(App.C_SOneArray, 5, App.HandshakeMessage, 0, App.C_SOneArray.Length - 5);
            Array.Copy(App.S_COneArray, 5, App.HandshakeMessage, App.C_SOneArray.Length - 5, App.S_COneArray.Length - 5);

            App.HandshakeMessage[App.C_SOneArray.Length - 5 + App.S_COneArray.Length - 5 + 1] = csTwo.ClientKeyExchange.HandshakeType;
            Array.Copy(csTwo.ClientKeyExchange.Length, 0, App.HandshakeMessage, App.C_SOneArray.Length - 5 + App.S_COneArray.Length - 5 + 1, 3);
            Array.Copy(csTwo.ClientKeyExchange.EncryptedPreMasterlength, 0, App.HandshakeMessage, App.C_SOneArray.Length - 5 + App.S_COneArray.Length - 5 + 4, 2);
            Array.Copy(csTwo.ClientKeyExchange.EncryptedPreMaster, 0, App.HandshakeMessage, App.C_SOneArray.Length - 5 + App.S_COneArray.Length - 5 + 6, 256);

            byte[] md5Hash = new MD5CryptoServiceProvider().ComputeHash(App.HandshakeMessage);
            byte[] sha1Hash = new SHA1CryptoServiceProvider().ComputeHash(App.HandshakeMessage);
            byte[] hash = new byte[md5Hash.Length + sha1Hash.Length];
            md5Hash.CopyTo(hash, 0);
            sha1Hash.CopyTo(hash, md5Hash.Length);

            byte[] clientVerifyData = Prf10.GenerateBytes(App.MasterSecret, "client finished", hash, 12);
            var clientFinishedHeaderBytes = new byte[4];
            clientFinishedHeaderBytes[0] = 20;
            clientFinishedHeaderBytes[1] = 0;
            clientFinishedHeaderBytes[2] = 0;
            clientFinishedHeaderBytes[3] = 12;

            byte[] keyBlock = Prf10.GenerateBytes(App.MasterSecret, "key expansion", App.SeverHelloAndClientHelloRandom, 66);
            byte[] client_write_MAC_secret = new byte[16];
            byte[] client_write_key = new byte[16];
            Buffer.BlockCopy(keyBlock, 0, client_write_MAC_secret, 0, 16);
            Buffer.BlockCopy(keyBlock, 32, client_write_key, 0, 16);

            var clientFinishedHash = Hasher.ComputeTlsMD5Hmac(client_write_MAC_secret, 0x16, 0, ByteUtilities.ConcatBytes(clientFinishedHeaderBytes, clientVerifyData));
            var clientFinishedDecrypted = ByteUtilities.ConcatBytes(clientFinishedHeaderBytes, clientVerifyData, clientFinishedHash);
            Arc4 clientWriteArc4 = new Arc4(client_write_key);
            csTwo.EncryptedHandshakeMessage = clientWriteArc4.Encrypt(clientFinishedDecrypted);

            csTwo.EncryptedHandshakeMessageBase.Length[0] = 0;
            csTwo.EncryptedHandshakeMessageBase.Length[1] = (byte)csTwo.EncryptedHandshakeMessage.Length;
        }
开发者ID:ronghaopger,项目名称:TlsClient,代码行数:73,代码来源:C_To_S_TwoManager.cs


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