zoukankan      html  css  js  c++  java
  • 【工具类】

    加解密

    public class EncryptUtils
    {
        #region Base64加密解密
        /// <summary>
        /// Base64加密
        /// </summary>
        /// <param name="input">需要加密的字符串</param>
        /// <returns></returns>
        public static string Base64Encrypt(string input)
        {
            return Base64Encrypt(input, new UTF8Encoding());
        }
    
        /// <summary>
        /// Base64加密
        /// </summary>
        /// <param name="input">需要加密的字符串</param>
        /// <param name="encode">字符编码</param>
        /// <returns></returns>
        public static string Base64Encrypt(string input, Encoding encode)
        {
            return Convert.ToBase64String(encode.GetBytes(input));
        }
    
        /// <summary>
        /// Base64解密
        /// </summary>
        /// <param name="input">需要解密的字符串</param>
        /// <returns></returns>
        public static string Base64Decrypt(string input)
        {
            return Base64Decrypt(input, new UTF8Encoding());
        }
    
        /// <summary>
        /// Base64解密
        /// </summary>
        /// <param name="input">需要解密的字符串</param>
        /// <param name="encode">字符的编码</param>
        /// <returns></returns>
        public static string Base64Decrypt(string input, Encoding encode)
        {
            return encode.GetString(Convert.FromBase64String(input));
        }
        #endregion
    
        #region DES加密解密
        /// <summary>
        /// DES加密
        /// </summary>
        /// <param name="data">加密数据</param>
        /// <param name="key">8位字符的密钥字符串</param>
        /// <param name="iv">8位字符的初始化向量字符串</param>
        /// <returns></returns>
        public static string DESEncrypt(string data, string key, string iv)
        {
            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
    
            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>
        /// DES解密
        /// </summary>
        /// <param name="data">解密数据</param>
        /// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>
        /// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>
        /// <returns></returns>
        public static string DESDecrypt(string data, string key, string iv)
        {
            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
    
            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="input">需要加密的字符串</param>
        /// <returns></returns>
        public static string MD5Encrypt(string input)
        {
            return MD5Encrypt(input, new UTF8Encoding());
        }
    
        /// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="input">需要加密的字符串</param>
        /// <param name="encode">字符的编码</param>
        /// <returns></returns>
        public static string MD5Encrypt(string input, Encoding encode)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] t = md5.ComputeHash(encode.GetBytes(input));
            StringBuilder sb = new StringBuilder(32);
            for (int i = 0; i < t.Length; i++)
                sb.Append(t[i].ToString("x").PadLeft(2, '0'));
            return sb.ToString();
        }
    
        /// <summary>
        /// MD5对文件流加密
        /// </summary>
        /// <param name="sr"></param>
        /// <returns></returns>
        public static string MD5Encrypt(Stream stream)
        {
            MD5 md5serv = MD5CryptoServiceProvider.Create();
            byte[] buffer = md5serv.ComputeHash(stream);
            StringBuilder sb = new StringBuilder();
            foreach (byte var in buffer)
                sb.Append(var.ToString("x2"));
            return sb.ToString();
        }
    
        /// <summary>
        /// MD5加密(返回16位加密串)
        /// </summary>
        /// <param name="input"></param>
        /// <param name="encode"></param>
        /// <returns></returns>
        public static string MD5Encrypt16(string input, Encoding encode)
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            string result = BitConverter.ToString(md5.ComputeHash(encode.GetBytes(input)), 4, 8);
            result = result.Replace("-", "");
            return result;
        }
        #endregion
    
        #region 3DES 加密解密
    
        public static string DES3Encrypt(string data, string key)
        {
            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
    
            DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
            DES.Mode = CipherMode.CBC;
            DES.Padding = PaddingMode.PKCS7;
    
            ICryptoTransform DESEncrypt = DES.CreateEncryptor();
    
            byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(data);
            return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
        }
    
        public static string DES3Decrypt(string data, string key)
        {
            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
    
            DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
            DES.Mode = CipherMode.CBC;
            DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
    
            ICryptoTransform DESDecrypt = DES.CreateDecryptor();
    
            string result = "";
            try
            {
                byte[] Buffer = Convert.FromBase64String(data);
                result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
            }
            catch (Exception e)
            {
    
            }
            return result;
        }
    
        #endregion
    
        #region HASH-1加密
        /// <summary>
        /// use sha1 to encrypt string
        /// </summary>
        public string SHA1_Encrypt(string Source_String)
        {
            byte[] StrRes = Encoding.Default.GetBytes(Source_String);
            HashAlgorithm iSHA = new SHA1CryptoServiceProvider();
            StrRes = iSHA.ComputeHash(StrRes);
            StringBuilder EnText = new StringBuilder();
            foreach (byte iByte in StrRes)
            {
                EnText.AppendFormat("{0:x2}", iByte);
            }
            return EnText.ToString();
        }
        #endregion
    }
    View Code

    http通信

    public class HttpUtilts
    {
                #region http请求
        /// <summary>
        /// 默认UserAgent
        /// </summary>
        private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
        /// <summary>
        /// 默认Timeout:10000毫秒(10秒)
        /// </summary>
        private static readonly int DefaultTimeout = 10000;
        /// <summary>
        /// 默认contentType
        /// </summary>
        private static readonly string DefaultcontentType = "application/x-www-form-urlencoded";
    
        /// <summary>
        /// http请求
        /// </summary>
        /// <param name="url">请求地址(必须)</param>
        /// <param name="content">请求内容</param>
        /// <param name="method">请求方式(必须)</param>
        /// <param name="headers">需要添加的标头信息</param>
        /// <param name="encoding">字符编码(默认:UTF8)</param>
        /// <param name="contentType">字符格式(默认:application/x-www-form-urlencoded)</param>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码(与用户名同时存在)</param>
        /// <param name="timeout">超时时间默认(10秒)</param>
        /// <returns>响应返回值</returns>
        public static string CreateHttpResponse(string url, string content, string method, Dictionary<string, string> headers, Encoding encoding, string contentType, string userName, string password, ref bool IsAbnormal, int timeout = 0)
        {
            //记录日志
            encoding = encoding == null ? Encoding.UTF8 : encoding;
            if (string.IsNullOrEmpty(url)) { return "URL错误!"; }
            if (string.IsNullOrEmpty(method)) { return "method错误!"; }
    
            string responseData = String.Empty;
            try
            {
                //实例化请求
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
    
                //请求类型
                request.Method = method;
    
                request.KeepAlive = false;
    
                request.AllowAutoRedirect = true;
    
                //标头
                if (headers != null) for (var i = 0; i < headers.Count; i++) { var item = headers.ElementAt(i); request.Headers.Add(item.Key, item.Value); }
    
                //超时时间()
                request.Timeout = timeout == 0 ? DefaultTimeout : timeout;
    
                //类型
                request.ContentType = string.IsNullOrEmpty(contentType) ? DefaultcontentType : contentType;
    
                //请求参数
                if (!string.IsNullOrEmpty(content))
                {
                    byte[] Data = encoding.GetBytes(content);
                    using (Stream reqStream = request.GetRequestStream())
                    {
                        reqStream.Write(Data, 0, Data.Length);
                        reqStream.Close();
                    }
                    //请求参数长度
                    if (request.ContentLength != Data.Length) request.ContentLength = Data.Length;
                }
                else
                {
                    request.ContentLength = 0;
                }
    
                //向路由提交基本身份验证
                if (!string.IsNullOrEmpty(userName) || !string.IsNullOrEmpty(password))
                {
                    string code = Convert.ToBase64String(encoding.GetBytes(string.Format("{0}:{1}", userName, password)));
                    request.Headers.Add("Authorization", "Basic " + code);
                }
    
                //发起请求,返回响应内容
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
                    {
                        IsAbnormal = true;
                        responseData = reader.ReadToEnd().ToString();
                    }
                }
            }
            catch (WebException ex)
            {
                IsAbnormal = false;
                //记录日志
                //CustomMethod.LogErrorLog("Url:" + url, "CustomData_CreateHttpResponse");
                //CustomMethod.LogErrorLog(ex.ToString(), "CustomData_CreateHttpResponse");
                //返回的响应
                HttpWebResponse response = (HttpWebResponse)ex.Response;
                //如果是错误400或者404则返回错误信息
                if (response != null)
                {
                    if (response.StatusCode == HttpStatusCode.BadRequest || response.StatusCode == HttpStatusCode.NotFound || response.StatusCode == HttpStatusCode.Unauthorized)
                    {
                        using (Stream _Stream = response.GetResponseStream())
                        {
                            using (StreamReader _Reader = new StreamReader(_Stream))
                            {
                                string _JsonData = _Reader.ReadToEnd();
    
                                //记录日志
                                //CustomMethod.LogErrorLog(_JsonData, "CustomData_CreateHttpResponse");
    
                                ExceptionModel Em = JsonConvert.DeserializeObject<ExceptionModel>(_JsonData);
    
                                return Em.error_description;
                            }
                        }
                    }
                }
                return "服务器异常,请联系管理员!";
    
            }
            return responseData;
        }
        public class ExceptionModel
        {
            public string error { get; set; }
            public string error_description { get; set; }
        }
        #endregion
    }
    View Code
  • 相关阅读:
    简单工厂笔记
    P3369 【模板】普通平衡树 Treap树堆学习笔记
    tp5阿里云短信验证码
    centos 安装php
    tp6.0.2开启多应用模式
    linux navicat最新版过期
    git commit之后 取消commit
    服务器重置之后ssh root@报错
    git pull push 每次都需要输入账号和密码
    跨域问题 php
  • 原文地址:https://www.cnblogs.com/wyt007/p/8377567.html
Copyright © 2011-2022 走看看