zoukankan      html  css  js  c++  java
  • MD5Helper

    /// <summary>
        /// 不可逆加密MD5
        /// MD5全称是message-digest algorithm 5,简单的说就是单向的加密,也就是说无法根据密文推导出明文。
        /// MD5主要用途:
        /// 1、对一段信息生成信息摘要,该摘要对该信息具有唯一性,可以作为数字签名
        /// 2、用于验证文件的有效性(是否有丢失或损坏的数据)
        /// 3、对用户密码的加密
        /// 4、在哈希函数中计算散列值
        /// 由于算法的某些不可逆特征,在加密应用上有较好的安全性。通过使用MD5加密算法,输入一个任意长度的字节串,
        /// 都会生成一个128位的整数。所以根据这一点MD5被广泛的用作密码加密。
        ///  特点:
        ///  不可逆加密
        /// 1 防止被篡改
        /// 2 防止明文存储
        /// 3 防止抵赖,数字签名
        /// </summary>
        public class MD5Helper
        {
            /// <summary>
            /// 直接进行md5加密
            /// </summary>
            /// <param name="strs"></param>
            /// <returns></returns>
            public static string ToMD5(string strs)
            {
                MD5 md5 = new MD5CryptoServiceProvider();
                var bytes = Encoding.Default.GetBytes(strs);//将要加密的字符串转换为字节数组
                var encryptdata = md5.ComputeHash(bytes);//将字符串加密后也转换为字符数组
                return Convert.ToBase64String(encryptdata);//将加密后的字节数组转换为加密字符串
            }
    
            /// <summary>
            /// 创建哈希字符串适用于任何 MD5 哈希函数 (在任何平台) 上创建 32 个字符的十六进制格式哈希字符串
            /// </summary>
            /// <param name="source"></param>
            /// <returns></returns>
            public static string Get32MD5One(string source)
            {
                using (MD5 md5Hash = MD5.Create())
                {
                    byte[] data = md5Hash.ComputeHash(System.Text.Encoding.UTF8.GetBytes(source));
                    System.Text.StringBuilder sBuilder = new System.Text.StringBuilder();
                    for (int i = 0; i < data.Length; i++)
                    {
                        sBuilder.Append(data[i].ToString("x2"));
                    }
    
                    string hash = sBuilder.ToString();
                    return hash.ToUpper();
                }
            }
    
            /// <summary>
            /// 获取16位md5加密
            /// </summary>
            /// <param name="source"></param>
            /// <returns></returns>
            public static string Get16MD5One(string source)
            {
                using (System.Security.Cryptography.MD5 md5Hash = System.Security.Cryptography.MD5.Create())
                {
                    byte[] data = md5Hash.ComputeHash(System.Text.Encoding.UTF8.GetBytes(source));
    
                    //转换成字符串,并取9到25位
                    string sBuilder = BitConverter.ToString(data, 4, 8);
    
                    //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉
                    sBuilder = sBuilder.Replace("-", "");
                    return sBuilder.ToString().ToUpper();
                }
            }
    
            //// <summary>
            /// </summary>
            /// <param name="strSource">需要加密的明文</param>
            /// <returns>返回32位加密结果,该结果取32位加密结果的第9位到25位</returns>
            public static string Get32MD5Two(string source)
            {
                System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
    
                //获取密文字节数组
                byte[] bytResult = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(source));
    
                //转换成字符串,32位
                string strResult = BitConverter.ToString(bytResult);
    
                //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉
                strResult = strResult.Replace("-", "");
                return strResult.ToUpper();
            }
    
            //// <summary>
            /// </summary>
            /// <param name="strSource">需要加密的明文</param>
            /// <returns>返回16位加密结果,该结果取32位加密结果的第9位到25位</returns>
            public static string Get16MD5Two(string source)
            {
                System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
    
                //获取密文字节数组
                byte[] bytResult = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(source));
    
                //转换成字符串,并取9到25位
                string strResult = BitConverter.ToString(bytResult, 4, 8);
    
                //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉
                strResult = strResult.Replace("-", "");
                return strResult.ToUpper();
            }
     }
    
    
  • 相关阅读:
    Eucalyptus1.6.2安装使用说明 in CentOS5.5 x86(原)
    Return to the Basic 类 (class )
    Return to the Basic 构造函数(Constructor),析构函数(Destuctor)
    Return to the basic 继承(Inheritation)
    服务器端(Tomcat+MySQL)和客户端数据操作(简单)
    Return to the Basic 友元函数 (friend)
    Return to the Basic 运算符重载 (Operator Overloading )
    Return to the Basic 虚函数(virtual)
    Return to the Basic 内联函数(inline)
    Return to the Basic 纯虚函数(pure virtual)和抽象类(abstract class)
  • 原文地址:https://www.cnblogs.com/lyboke/p/14837791.html
Copyright © 2011-2022 走看看