zoukankan      html  css  js  c++  java
  • DES加密解密

    public class DESDemo
        {
            /// <summary>
            /// DES加密方法
            /// </summary>
            /// <param name="text">明文</param>
            /// <param name="sKey">密钥</param>
            /// <param name="iv">向量</param>
            /// <returns>加密后的密文</returns>
            public static string DESEncrypt(string text, string sKey,string iv)
            {
                using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
                {
                    byte[] byteArray;
                    byteArray = Encoding.Default.GetBytes(text);
                    des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.
                        HashPasswordForStoringInConfigFile(sKey, "MD5").Substring(0, 8));
                    des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.
                        HashPasswordForStoringInConfigFile(iv, "MD5").Substring(0, 8));
                    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
                    {
                        using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
                        {
                            cs.Write(byteArray, 0, byteArray.Length);
                            cs.FlushFinalBlock();
                            //StringBuilder ret = new StringBuilder();
                            //foreach (byte b in ms.ToArray())
                            //{
                            //    ret.AppendFormat("{0:X2}", b);
                            //}
                            return Convert.ToBase64String(ms.ToArray());
                        }
                    }
                } 
            }
            /// <summary>
            /// DES解密方法
            /// </summary>
            /// <param name="text">密文</param>
            /// <param name="sKey">密钥</param>
            /// <param name="iv">向量</param>
            /// <returns>解密后的明文</returns>
            public static string DESDecrypt(string text, string sKey,string iv)
            {
                using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
                {
                    //int len;
                    //len = text.Length / 2;
                    //byte[] byteArray = new byte[len];
                    //int x, i;
                    //for (x = 0; x < len; x++)
                    //{
                    //    i = Convert.ToInt32(text.Substring(x * 2, 2), 16);
                    //    byteArray[x] = (byte)i;
                    //}
                    byte[] byteArray;
                    byteArray = Convert.FromBase64String(text);
                    try
                    {
                        des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.
                            HashPasswordForStoringInConfigFile(sKey, "MD5").Substring(0, 8));
                        des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.
                            HashPasswordForStoringInConfigFile(iv, "MD5").Substring(0, 8));
                        using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
                        {
                            using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
                            {
                                cs.Write(byteArray, 0, byteArray.Length);
                                cs.FlushFinalBlock();
                                string estring = Encoding.Default.GetString(ms.ToArray());
                                return estring;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }
        }
    static void Main(string[] args)
            {
                var text = DESDemo.DESEncrypt("你我他", "key", "key");
                DESDemo.DESDecrypt(text, "key","key");
                Console.WriteLine("加密后:"+text);
                Console.WriteLine("解密后:"+DESDemo.DESDecrypt(text, "key", "key"));
                Console.ReadKey();
            }

    运行结果:

  • 相关阅读:
    Vue axios 使用记录
    Vue CLI 项目创建
    Vue中的事件修饰符。
    js 中控制打印方向横向还是纵向。
    element ui 列表中删除只能删除最后一项
    文件上传formData上传之前查看对象里的值
    GridControl_gridView 单元格内容换行(wrap)
    SqlTest(2013-07-10)
    printPreviewControl1 打印预览
    避免button处理事件过程中 点击按钮触发事件的方法
  • 原文地址:https://www.cnblogs.com/z-huan/p/7428303.html
Copyright © 2011-2022 走看看