• C# 64位 加密/解密类


        /// <summary>
        /// 加密/解密类
        /// </summary>
        public class EncAndDec
        {
            //加密/解密钥匙
            const string KEY_64 = "jzw7tz8g";//注意了,是8个字符,64位    
            const string IV_64 = "tvbzn9i7";//注意了,是8个字符,64位
    
            const string ClientLocal_KEY_64 = "xinxinwb";
            const string ClientLocal_IV_64 = "39389993";
    
            /// <summary>
            /// 加密的方法,通过2个密匙进行加密
            /// </summary>
            /// <param name="data">加密的数据</param>
            /// <returns>返回加密后的字符串</returns>
            public static string Encode(string data)
            {
                EncAndDec ed = new EncAndDec();
                return ed.Encode(data, KEY_64, IV_64);
            }
            /// <summary>
            /// 解密的方法
            /// </summary>
            /// <param name="data">解密的数据</param>
            /// <returns>返回加密前的字符串</returns>
            public static string Decode(string data)
            {
                EncAndDec ed = new EncAndDec();
                return ed.Decode(data, KEY_64, IV_64);
            }
    
            /// <summary>
            /// 客户本地加密的方法,通过2个密匙进行加密
            /// </summary>
            /// <param name="data">加密的数据</param>
            /// <returns>返回加密后的字符串</returns>
            public static string EncodeClientLocal(string data)
            {
                EncAndDec ed = new EncAndDec();
                return ed.Encode(data, ClientLocal_KEY_64, ClientLocal_IV_64);
            }
            /// <summary>
            /// 客户本地解密的方法
            /// </summary>
            /// <param name="data">解密的数据</param>
            /// <returns>返回加密前的字符串</returns>
            public static string DecodeClientLocal(string data)
            {
                EncAndDec ed = new EncAndDec();
                return ed.Decode(data, ClientLocal_KEY_64, ClientLocal_IV_64);
            }
    
            #region DEC加密的方法
            /// <summary>
            /// 加密的方法,通过2个密匙进行加密
            /// </summary>
            /// <param name="data">通过Md5加密一次</param>
            /// <param name="KEY_64"></param>
            /// <param name="IV_64"></param>
            /// <returns></returns>
            private string Encode(string data, string KEY_64, string IV_64)
            {
    
                KEY_64 = ToMD5(KEY_64);
                IV_64 = ToMD5(IV_64);
                byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
                byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
    
                DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
                int i = cryptoProvider.KeySize;
                MemoryStream ms = new MemoryStream();
                CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
    
                StreamWriter sw = new StreamWriter(cst);
                sw.Write(data);
                sw.Flush();
                cst.FlushFinalBlock();
                sw.Flush();
                return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
    
            }
            /// <summary>
            /// 解密的方法()
            /// </summary>
            /// <param name="data"></param>
            /// <param name="KEY_64"></param>
            /// <param name="IV_64"></param>
            /// <returns></returns>
            private string Decode(string data, string KEY_64, string IV_64)
            {
                KEY_64 = ToMD5(KEY_64);
                IV_64 = ToMD5(IV_64);
                byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
                byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
    
                byte[] byEnc;
                try
                {
                    byEnc = Convert.FromBase64String(data);
                }
                catch
                {
                    return null;
                }
    
                DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
                MemoryStream ms = new MemoryStream(byEnc);
                CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
                StreamReader sr = new StreamReader(cst);
                return sr.ReadToEnd();
            }
            #endregion
    
            #region MD5加密
            /// <summary>
            /// 转换MD5密码
            /// </summary>
            /// <param name="pass"></param>
            /// <returns></returns>
            public static string ToMD5(string KEY)
            {
                byte[] result = Encoding.Default.GetBytes(KEY);
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] output = md5.ComputeHash(result);
    
                string KEY_64 = BitConverter.ToString(output).Replace("-", "").Substring(0, 8);
                return KEY_64;
    
            }
            #endregion
    
        }
  • 相关阅读:
    IPv6时代,中小企业该如何布局?
    并发场景下的幂等问题——分布式锁详解
    阿里巴巴服务网格技术三位一体战略背后的思考与实践
    阿里云 Serverless 助力企业全面拥抱云原生
    阿里云徐立:面向容器和 Serverless Computing 的存储创新
    如何使用 Kubernetes 监测定位慢调用
    双11特刊 | 全面云原生化,数据库实例独共享混部 最高降低30%成本
    VS2010显示行号 po
    Webservice更新时出错。下载”。。。”时出错。请求失败,错误信息为: po
    google地图 无法定位 请在系统设置中启用“我的位置”源 po
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/2563067.html
Copyright © 2020-2023  润新知