C# DES加密(DES/CSC/PKCS7 秘钥+偏移量+hex输出) 方法小记

#region DESEnCode DES加密   

        //使用这个!!!
        public static string DESEnCode(string pToEncrypt, string sKey)
        {

            //sKey = "NudsxliCwfeqaOKI";

            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(pToEncrypt);

            //建立加密对象的密钥和偏移量    
            //原文使用ASCIIEncoding.ASCII方法的GetBytes方法    
            //使得输入密码必须输入英文文本    
            //des.Mode = CipherMode.ECB;

            des.Key = ASCIIEncoding.ASCII.GetBytes(sKey.Substring(0, 8).ToString());
            des.IV = ASCIIEncoding.ASCII.GetBytes(sKey.Substring(8, 8).ToString());
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);

            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();

            StringBuilder ret = new StringBuilder();
            foreach (byte b in ms.ToArray())
            {
                ret.AppendFormat("{0:X2}", b);
            }
            ret.ToString();
            return ret.ToString();
        }


        /// <summary>
        /// des加密
        /// </summary>
        /// <returns></returns>
        public static string DESEncrypt(string original, string key, string iv)
        {
            byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
            byte[] rgbIV = Encoding.UTF8.GetBytes(iv);
            byte[] inputByteArray = Encoding.UTF8.GetBytes(original);
            try
            {
                using (var des = new DESCryptoServiceProvider())
                {
                    des.Padding = PaddingMode.PKCS7;
                    des.Mode = CipherMode.CBC;
                    des.Key = rgbKey;
                    des.IV = rgbIV;
                    using (var ms = new System.IO.MemoryStream())
                    {
                        var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                        cs.Close();
                        cs.Dispose();

                        StringBuilder ret = new StringBuilder();
                        foreach (byte b in ms.ToArray())
                        {
                            ret.AppendFormat("{0:X2}", b);
                        }
                        return ret.ToString();
                    }
                }
            }
            catch(Exception ex)
            {
                return "";
            }
        }

        #endregion

 

posted @ 2022-02-16 10:52  Booneey  阅读(458)  评论(0)    收藏  举报