Пример #1
0
 /// <summary>
 /// 3DES解密24位自定义填充类型
 /// </summary>
 /// <param name="decryptSource">解密的数据源</param>
 /// <param name="decryptKey">解密的密匙</param>
 /// <param name="decryptIV">解密的矢量</param>
 /// <param name="paddingMode">填充类型</param>
 /// <returns>解密串</returns>
 public static string TripleDESDecrypt(string decryptSource, string decryptKey, string decryptIV, System.Security.Cryptography.PaddingMode paddingMode)
 {
     return(TripleDESDecrypt(decryptSource, decryptKey, decryptIV, paddingMode, 24, "ToBase64"));
 }
Пример #2
0
        /// <summary>
        /// 3DES解密
        /// </summary>
        /// <param name="decryptSource">解密的数据源</param>
        /// <param name="decryptKey">解密的密匙</param>
        /// <param name="decryptIV">解密的矢量</param>
        /// <param name="paddingMode">填充模式</param>
        /// <param name="byteNum">字节</param>
        ///  <param name="outType">解密字节形式ToHex16,ToBase64</param>
        /// <returns>解密串</returns>
        public static string TripleDESDecrypt(string decryptSource, string decryptKey, string decryptIV, System.Security.Cryptography.PaddingMode paddingMode, int byteNum, string outType, System.Security.Cryptography.CipherMode mode = System.Security.Cryptography.CipherMode.ECB)
        {
            //构造一个对称算法
            SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();

            ICryptoTransform ct;
            MemoryStream     ms;
            CryptoStream     cs;

            byte[] byt = new byte[0];

            if (string.IsNullOrEmpty(outType))
            {
                return("解密配置不能空");
            }
            if ((decryptKey.Trim().Length) != byteNum)
            {
                return("解密字节错误");
            }

            byte[] Key = System.Text.Encoding.Default.GetBytes(decryptKey.Trim());

            mCSP.Key = Key;
            //默认矢量
            if (String.IsNullOrEmpty(decryptIV))
            {
                decryptIV = decryptKey.Substring(0, 8);
            }
            mCSP.IV = System.Text.Encoding.Default.GetBytes(decryptIV);

            mCSP.Mode    = mode;
            mCSP.Padding = paddingMode;
            ct           = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);

            //输出16进制字符
            if (outType == "ToHex16")
            {
                byt = ConvertHexToBytes(decryptSource);
            }
            //输出ToBase64字符
            if (outType == "ToBase64")
            {
                byt = Convert.FromBase64String(decryptSource);
            }
            ms = new MemoryStream();
            cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
            cs.Write(byt, 0, byt.Length);
            cs.FlushFinalBlock();
            cs.Close();

            return(Encoding.Default.GetString(ms.ToArray()).Replace("\0", "").Trim());
        }
Пример #3
0
        /// <summary>
        /// 3DES加密自定义字节位填充类型
        /// </summary>
        /// <param name="encryptSource">加密的数据源</param>
        /// <param name="encryptKey">加密的密匙</param>
        /// <param name="encryptIV">加密的矢量</param>
        /// <param name="paddingMode">自定义填充类型</param>
        /// <param name="byteNum">自定义字节数</param>
        /// <param name="outType">输出字节形式ToHex16,ToBase64</param>
        /// <returns>加密串</returns>
        public static string TripleDESEncrypt(string encryptSource, string encryptKey, string encryptIV, System.Security.Cryptography.PaddingMode paddingMode, int byteNum, string outType, System.Security.Cryptography.CipherMode mode = System.Security.Cryptography.CipherMode.ECB)
        {
            //构造一个对称算法
            SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();

            ICryptoTransform ct;
            MemoryStream     ms;
            CryptoStream     cs;

            byte[] byt;

            if (string.IsNullOrEmpty(outType))
            {
                return("输出配置不能空");
            }
            if ((encryptKey.Trim().Length) != byteNum)
            {
                return("加密字节");
            }
            byte[] Key = System.Text.Encoding.Default.GetBytes(encryptKey);
            mCSP.Key = Key;
            //默认矢量
            if (String.IsNullOrEmpty(encryptIV))
            {
                encryptIV = encryptKey.Substring(0, 8);
            }
            mCSP.IV = System.Text.Encoding.Default.GetBytes(encryptIV);

            //指定加密的运算模式
            mCSP.Mode = mode;
            //获取或设置加密算法的填充模式
            mCSP.Padding = paddingMode;

            ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);

            byt = System.Text.Encoding.Default.GetBytes(encryptSource.Trim());

            ms = new MemoryStream();
            cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
            cs.Write(byt, 0, byt.Length);
            cs.FlushFinalBlock();
            cs.Close();

            string mToString = string.Empty;

            //输出16进制字符
            if (outType == "ToHex16")
            {
                mToString = ToHexString(ms.ToArray());
            }
            //输出ToBase64字符
            if (outType == "ToBase64")
            {
                mToString = Convert.ToBase64String(ms.ToArray()).ToString().Replace("\0", "");
            }

            return(mToString);
        }