/// <summary>
        /// 根据十六进制还是base64来进行RSA的初始化
        /// </summary>
        /// <param name="privateKey"></param>
        /// <returns></returns>
        public static RSA CreateRsaProviderFromPrivateKey(byte[] privateKeyByte)
        {
            using (var rsa = RSA.Create())
            {
                var rsaParameters = new RSAParameters();

                using (BinaryReader binr = new BinaryReader(new MemoryStream(privateKeyByte)))
                {
                    byte   bt       = 0;
                    ushort twobytes = 0;
                    twobytes = binr.ReadUInt16();
                    if (twobytes == 0x8130)
                    {
                        binr.ReadByte();
                    }
                    else if (twobytes == 0x8230)
                    {
                        binr.ReadInt16();
                    }
                    else
                    {
                        throw new Exception("Unexpected value read binr.ReadUInt16()");
                    }

                    twobytes = binr.ReadUInt16();
                    if (twobytes != 0x0102)
                    {
                        throw new Exception("Unexpected version");
                    }

                    bt = binr.ReadByte();
                    if (bt != 0x00)
                    {
                        throw new Exception("Unexpected value read binr.ReadByte()");
                    }

                    rsaParameters.Modulus  = binr.ReadBytes(SecretAlg.GetIntegerSize(binr));
                    rsaParameters.Exponent = binr.ReadBytes(SecretAlg.GetIntegerSize(binr));
                    rsaParameters.D        = binr.ReadBytes(SecretAlg.GetIntegerSize(binr));
                    rsaParameters.P        = binr.ReadBytes(SecretAlg.GetIntegerSize(binr));
                    rsaParameters.Q        = binr.ReadBytes(SecretAlg.GetIntegerSize(binr));
                    rsaParameters.DP       = binr.ReadBytes(SecretAlg.GetIntegerSize(binr));
                    rsaParameters.DQ       = binr.ReadBytes(SecretAlg.GetIntegerSize(binr));
                    rsaParameters.InverseQ = binr.ReadBytes(SecretAlg.GetIntegerSize(binr));
                }

                rsa.ImportParameters(rsaParameters);
                return(rsa);
            }
        }