Пример #1
0
        private void btnDe_Click(object sender, EventArgs e)
        {
            byte[] result = null;
            try
            {
                StringFormatTypes stringType  = (StringFormatTypes)Enum.Parse(typeof(StringFormatTypes), this.cmbStringFormatType.Text);
                CipherMode        cipherMode  = (CipherMode)Enum.Parse(typeof(CipherMode), this.cmbCipherMode.Text);
                PaddingMode       paddingMode = (PaddingMode)Enum.Parse(typeof(PaddingMode), this.cmbPaddingMode.Text);

                if (this.cmbAlgorithm.Text == "DES")
                {
                    result = this.txtCipherText.Text.DESDecrypt(key1, key2, stringType, cipherMode, paddingMode);
                }
                else if (this.cmbAlgorithm.Text == "TripleDES/DESede")
                {
                    result = this.txtCipherText.Text.DESedeDecrypt(key1, key2, stringType, cipherMode, paddingMode);
                }

                if (result != null)
                {
                    this.txtSource.Text = result.ToString(StringFormatTypes.None);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Пример #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="bytes"></param>
 /// <param name="destFormatType">目标字符串格式类型</param>
 /// <param name="charset"></param>
 /// <returns></returns>
 public static string ToString(this byte[] bytes, StringFormatTypes destFormatType = StringFormatTypes.None, string charset = "UTF-8")
 {
     if (destFormatType == StringFormatTypes.BASE64)
     {
         return(Convert.ToBase64String(bytes));
     }
     else if (destFormatType == StringFormatTypes.HEX)
     {
         return(string.Join(string.Empty, bytes.Select(x => x.ToString("X2"))));
         //return BitConverter.ToString(bytes).Replace("-", "");
     }
     else
     {
         return(Encoding.GetEncoding(charset).GetString(bytes));
     }
 }
Пример #3
0
        /// <summary>
        /// 源字符串转化为字节数组
        /// </summary>
        /// <param name="source">源字符串</param>
        /// <param name="sourceFormatType">源字符串的字符串格式类型</param>
        /// <param name="charset">字符集</param>
        /// <returns>字节数组</returns>
        public static byte[] ToByteArray(this string source, StringFormatTypes sourceFormatType = StringFormatTypes.None, string charset = "UTF-8")
        {
            if (sourceFormatType == StringFormatTypes.BASE64)
            {
                return(Convert.FromBase64String(source));
            }
            else if (sourceFormatType == StringFormatTypes.HEX)
            {
                int    len   = source.Length;
                byte[] bytes = new byte[len / 2];
                for (int i = 0; i < len; i += 2)
                {
                    bytes[i / 2] = Convert.ToByte(source.Substring(i, 2), 16);
                }

                return(bytes);
            }
            else
            {
                return(Encoding.GetEncoding(charset).GetBytes(source));
            }
        }
Пример #4
0
        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="source"></param>
        /// <param name="key"></param>
        /// <param name="iv"></param>
        /// <param name="sourceFormatType"></param>
        /// <param name="cipherMode"></param>
        /// <param name="paddingMode"></param>
        /// <returns></returns>
        public static byte[] DESDecrypt(this string source, string key, string iv, StringFormatTypes sourceFormatType = StringFormatTypes.BASE64, CipherMode cipherMode = CipherMode.CBC, PaddingMode paddingMode = PaddingMode.PKCS7)
        {
            var provider = new DESCryptoServiceProvider();

            provider.Mode    = cipherMode;
            provider.Padding = paddingMode;

            using (MemoryStream memoryStream = new MemoryStream())
            {
                byte[] rgbKey = key.ToByteArray(StringFormatTypes.None);
                byte[] rgbIV  = iv.ToByteArray(StringFormatTypes.None);
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, provider.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write))
                {
                    byte[] buffer = source.ToByteArray(sourceFormatType);

                    cryptoStream.Write(buffer, 0, buffer.Length);
                    cryptoStream.FlushFinalBlock();
                }

                return(memoryStream.ToArray());
            }
        }
Пример #5
0
 /// <summary>
 /// 源字符串转化为指定字符串格式类型的字符串
 /// </summary>
 /// <param name="source">源字符串</param>
 /// <param name="sourceFormatType">源字符串格式类型</param>
 /// <param name="destFormatType">目标字符串格式类型</param>
 /// <param name="charset">字符集类型</param>
 /// <returns>指定字符串格式类型的字符串</returns>
 public static string ToString(this string source, StringFormatTypes sourceFormatType = StringFormatTypes.None, StringFormatTypes destFormatType = StringFormatTypes.None, string charset = "UTF-8")
 {
     return(source.ToByteArray(sourceFormatType, charset).ToString(destFormatType, charset));
 }
Пример #6
0
 /// <summary>
 /// 解密
 /// </summary>
 /// <param name="source"></param>
 /// <param name="key"></param>
 /// <param name="sourceFormatType"></param>
 /// <param name="cipherMode"></param>
 /// <param name="paddingMode"></param>
 /// <returns></returns>
 public static byte[] DESDecrypt(this string source, string key, StringFormatTypes sourceFormatType = StringFormatTypes.BASE64, CipherMode cipherMode = CipherMode.CBC, PaddingMode paddingMode = PaddingMode.PKCS7)
 {
     return(DESDecrypt(source, key, key, sourceFormatType, cipherMode, paddingMode));
 }