zoukankan      html  css  js  c++  java
  • C# 密码盐码加密

    每次新建账号密码的时候都需要获取一下新的盐码,之后用使用MD5为用户密码加密

            /// <summary>
            /// 获取新的密码盐码
            /// </summary>
            /// <returns></returns>
            public static string GetPasswordSalt()
            {
                var salt = new byte[128/8];
                using (var saltnum = RandomNumberGenerator.Create())
                {
                    saltnum.GetBytes(salt);
                }
                return Convert.ToBase64String(salt);
            }
            /// <summary>
            /// 获取根据盐码加密的密码
            /// </summary>
            /// <param name="password">原密码</param>
            /// <param name="salt">盐码</param>
            /// <returns></returns>
            public static string GenEncodingPassword(string password
                ,string salt)
            {
                MD5 md5 = MD5.Create();
                byte[] bs = Encoding.UTF8.GetBytes(password+salt);
                byte[] hs = md5.ComputeHash(bs);
                StringBuilder strb = new StringBuilder();
                foreach (byte item in hs)
                {
                    strb.Append(item.ToString("x2"));
                }
                return strb.ToString();
            }

    注意:由于MD5是不可逆的,所以加密之后就无法解密,在每次登录的时候,都需要查询一下账号对应的盐码是多少,之后密码盐码加密,再与数据库中保存的密码来对比(数据库保存的密码是盐码加密之后的)。如果比对结果一致,则可以判定登陆成功!所以要在数据库中添加一个盐码的字段。

  • 相关阅读:
    Camel routes in Spring config file
    Construct a basic automation test framework
    Java custom annotations
    Java Abstract Class
    Hibernate之mappedBy
    hibernate FetchType理解
    hibernate 双向 OneToOne fetchType lazy 问题
    日常总结
    hibernate二级缓存
    sql子查询和嵌套查询
  • 原文地址:https://www.cnblogs.com/ljknlb/p/10654444.html
Copyright © 2011-2022 走看看