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();
            }

    运行结果:

  • 相关阅读:
    Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (gbk_chinese_ci,COERCIBLE) for operation '=' 一个解决办法(转载)
    mysql limit用法
    preparedStatement一个小技巧
    两个简单的压力测试代码。
    cookie实现session机制
    java.util.properties用法
    数据库是否使用外键,及视图,索引,存储过程的一些说明(zz)
    某项目要调用现有的100多个DLL 二 最最简单原型的思考
    面试题:红绿灯
    一个简单的封装 .net的日志功能
  • 原文地址:https://www.cnblogs.com/z-huan/p/7428303.html
Copyright © 2011-2022 走看看