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

  • 相关阅读:
    Linux下c开发 之 线程通信(转)
    mount -t nfs 的使用
    window共享linux下的文件 samba
    C/C++ 的使用
    php获取格式时间和时间戳
    php压缩文件夹
    php递归删除文件夹
    php生成文件夹(递归生成)
    QQ音乐API分析记录
    $(this)与this的区别
  • 原文地址:https://www.cnblogs.com/ljknlb/p/10654444.html
Copyright © 2011-2022 走看看