コード例 #1
0
        /// <summary>将某种格式的密文转为加密后的二进制数据</summary>
        /// <param name="ciphertext">密文</param>
        /// <param name="format">密文格式</param>
        /// <returns>加密后的二进制数据</returns>
        public static byte[] FromCiphertext(string ciphertext, CiphertextFormat format)
        {
            byte[] result = null;

            if (format == CiphertextFormat.Base64String)
            {
                result = Convert.FromBase64String(ciphertext);
            }
            else if (format == CiphertextFormat.HexString)
            {
                string[] data = ciphertext.Split('-');

                result = new byte[data.Length];

                Int32Converter converter = new Int32Converter();

                for (int i = 0; i < data.Length; i++)
                {
                    result[i] = Convert.ToByte(converter.ConvertFromInvariantString(string.Format("0x{0}", data[i])).ToString());
                }
            }
            else if (format == CiphertextFormat.HexStringWhitoutHyphen)
            {
                result = new byte[ciphertext.Length / 2];

                Int32Converter converter = new Int32Converter();

                for (int i = 0; i < ciphertext.Length; i = i + 2)
                {
                    result[i / 2] = Convert.ToByte(converter.ConvertFromInvariantString(string.Format("0x{0}", ciphertext.Substring(i, 2)).ToString()));
                }
            }

            return(result);
        }
コード例 #2
0
        /// <summary>
        /// DES descrypt.
        /// </summary>
        /// <param name="i_key">Keys</param>
        /// <param name="i_IV">initial vector</param>
        /// <param name="i_data">Data</param>
        /// <returns></returns>
        public static string Decrypt(string i_key, string i_IV, string i_data)
        {
            string[]       m_datas        = i_data.Split('-');
            byte[]         m_values       = new byte[m_datas.Length];
            Int32Converter m_i32Converter = new Int32Converter();

            for (int i = 0; i < m_datas.Length; i++)
            {
                m_values[i] = Convert.ToByte(m_i32Converter.ConvertFromInvariantString("0x" + m_datas[i]).ToString());
            }
            byte[] m_keys = Encoding.ASCII.GetBytes(i_key);
            byte[] m_IVs  = Encoding.ASCII.GetBytes(i_IV);
            byte[] m_data = Encoding.ASCII.GetBytes(i_data);
            DESCryptoServiceProvider m_DES     = new DESCryptoServiceProvider();
            ICryptoTransform         m_decrypt = m_DES.CreateDecryptor(m_keys, m_IVs);

            byte[] m_result = m_decrypt.TransformFinalBlock(m_values, 0, m_values.Length);
            m_decrypt.Dispose();
            m_DES.Clear();
            return(Encoding.ASCII.GetString(m_result));
        }