zoukankan      html  css  js  c++  java
  • 数据加密之MD5加密

    MD5是一个安全的散列算法,有两个特点:
    1、输入两个不同的明文(一段原始的数字信息)不会得到相同的输出值
    2、根据输出值,不能得到原始的明文,即过程不可逆
    所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,然后在所谓的解密的时候,都是通过这个映射表来查找其所对应的原始明文。
    而绝对没有一种算法,可以通过输出加密后的散列值算出原始明文。

    了解更多看百度百科:

    http://baike.baidu.com/link?url=R7WBookslKWRvprcZ6o4ZkurlXDPTaCqr6kTzT1WWIPwTgb5eRpi2e6dVXMEKoM_

    http://baike.baidu.com/link?url=HsaSyVnnJ3n2Ep2XVoSPv0SBJRvCY0Zm18MqDZIvvkJUwSZvgz4yS9upDY_YTVcVBOpUZUxFVyio4r_yY0Xq5K

    MD5加密是不可逆的。故数据已经很安全了,代码如下

    MD5CryptoServiceProvider在命名空间:System.Security.Cryptography;

     1    #region =======MD5加密======
     2         /// <summary>
     3         /// MD5加密
     4         /// </summary>
     5         /// <param name="sDataIn"></param>
     6         /// <returns></returns>
     7         public static string GetMD5(string sDataIn)
     8         {
     9             MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
    10             byte[] bytValue, bytHash;
    11             bytValue = System.Text.Encoding.UTF8.GetBytes(sDataIn + "unity3d");
    12             bytHash = md5.ComputeHash(bytValue);
    13             md5.Clear();
    14             string sTemp = "";
    15             for (int i = 0; i < bytHash.Length; i++)
    16             {
    17                 sTemp += bytHash[i].ToString("X").PadLeft(2, '0');
    18             }
    19             return sTemp.ToLower();
    20         }

    当然,你可以把原始密码用MD5加密几次。这样是不是更加安全呢。

     1 /// <summary>
     2         /// 登陆入口,用于密码加密,加密后的密码为:  s+md5(s+md5(pwd))
     3         /// </summary>
     4         /// <param name="pwd">用户输入的密码或者数据库中存储的用户密码</param>
     5         /// <param name="s">随机产生一个两位的字母:s,也可以自己指定字母</param>
     6         /// <returns></returns>
     7         public static string Entry(string pwd, string s)
     8         {
     9             if (string.IsNullOrEmpty(s))
    10             {
    11                 Random randmon = new Random();
    12                 s = ((char)randmon.Next(65, 91)).ToString() + ((char)randmon.Next(65, 91)).ToString();
    13             }
    14             return s + GetMD5((s + GetMD5(pwd)));
    15         }

    然后直接调用Entry("unity3d","AB");即可。

  • 相关阅读:
    experss路由工作原理
    mongoose学习参考
    express+nodejs 个人博客
    HTML5-CSS3学习20150410(一)
    js学习20150420(七)
    js学习20150401(六)
    js学习20150401(五)
    js学习20150401(四)
    【荐】使用eval()、new Function()将JSON字符串转换为JSON对象
    HTML5 Canvas核心技术—图形、动画与游戏开发.pdf7
  • 原文地址:https://www.cnblogs.com/nsky/p/4481899.html
Copyright © 2011-2022 走看看