C# salt hash 加密

作者: 网络编程  发布:2019-12-07

1   先明了多少个基本概念

  (1卡塔尔(英语:State of Qatar)伪随机数:pseudo-random number generators ,简单称谓为:P瑞虎NGs,是计算机应用早晚的算法来发生的。伪随机数并非假随机

      数,这里的“伪”是有规律的意趣,就  是Computer发生的伪随机数既是专断的又是有规律的。怎么着领悟吧?发生的伪随机数一时遵守一定的原理,有

      时不固守任何规律;伪随机数有局地据守一定的规律;另风华正茂局地不遵守任何规律。例如“世上未有两片形状完全相近的叶片”,那多亏点到告竣

      物的特点,即随机性,但是各类树的卡牌都有贴近的形象,那正是事物的共性,即规律性。从这一个角度讲,你差十分少就能够担负那样的真相了:计算机

      只能发出伪随机数而不能够生出绝对随机的随机数。

  (2卡塔尔国真随机数:true random number generators ,简单的称呼为:TCRUISERNGs,是使用不足预言的物理方法来发出的随机数。

  (3卡塔尔明文:原始密码,未通过其余算法加密的密码。

  (4卡塔尔密文:原始密码通过某种算法加密后,产生的密码。

金沙澳门官网 ,2   C# salt hash加密准绳

   法规:salt伪随机值 原始密码,即salt伪随机值与原本密码组合成明文,然后通过hash算法造成密文,如:

           借使salt发生的伪随机数为:9de74893-0b41-4f4e-91dc-06f62241b8bc

           原始明文为:admin

           组合准则:原始明文 salt伪随机值,即admin9de74893-0b41-4f4e-91dc-06f62241b8bc

           hash加密后密文:urfFO/IWz912E2GXL4KiCzbosuZ6TdLpMk7lDMuranoVVdYk=

           数据库表结果如下:

           金沙澳门官网 1

3   C# salt爆发伪随机数法则

   第一步:引进命名空间 using System;

   第二步:调用布局体Guid的NewGuid(卡塔尔(قطر‎方法;

   第三步:代码表示 string strSalt = Guid.NewGuid(卡塔尔国.ToString();  

       注释:当然,也足以调用类Random下的情势来产生伪随机数。

4   hash原理

   hash是意气风发种不可逆加密算法,C# HASH算法非常多,列举二种如下:

   (1)MD5

   (2卡塔尔(قطر‎SHA亲族:这里顺便提一下,美利坚合作国政党早先普及应用SHA-1算法,在二零零五年被本国山西北大学学的王小云教师开采了安全漏洞,所以今后相比较常

       用SHA-1加长的变种,比如SHA-256。在.NET中,能够采取SHA256Managed类

   (3卡塔尔国关键代码如下:

protected void btnRegister_Click(object sender, EventArgs e)
        {
           //用户名和密码
            string userName = this.TextBoxUserName.Text;
            string userPwd = this.TextBoxPWD.Text;
            //salt
            string strSalt= Guid.NewGuid().ToString();

            //SHA256加密
            byte[] pwdAndSalt = Encoding.UTF8.GetBytes(userPwd   strSalt);
            byte[] hashBytes = new SHA256Managed().ComputeHash(pwdAndSalt);
            string hashStr = Convert.ToBase64String(hashBytes);

            StringBuilder strBuid = new StringBuilder();
            strBuid.Append("INSERT INTO userInfo(");
            strBuid.Append("userName,userPassword,salt) values(");
            strBuid.Append("@userName,@hashStr,@strSalt)");
            SqlParameter[] sqlpara = {
                                         new SqlParameter("@userName",SqlDbType.NVarChar,50),
                                         new SqlParameter("@hashStr",SqlDbType.NVarChar,50),
                                         new SqlParameter("@strSalt",SqlDbType.NVarChar,50)
                                     };
            sqlpara[0].Value = this.TextBoxUserName.Text;
            sqlpara[1].Value = hashStr;
            sqlpara[2].Value = strSalt;
            //获取连接字符串
            string sqlConStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;

            using (SqlConnection con=new SqlConnection(sqlConStr))
            {
                con.Open();
                SqlCommand cmd = new SqlCommand(strBuid.ToString(),con);
                cmd.Parameters.AddRange(sqlpara);
                if (cmd.ExecuteNonQuery()>0)
                {
                    Response.Write("<script>alert('注册成功!')</script>");
                }
                else
                {
                    Response.Write("<script>alert('注册失败!')</script>");
                }

            }
        }

5   C#遍布加密算法

     MD5加密、SHA宗族加密、KoleosSA加密、DES加密,近年来主流加密为EscortSA,如数字签名等,在本篇博客中,就无论述,未来会对那四类算法作详细阐释。

6   更仆难数密码破解算法

     最简便、何奇之有的破解格局当属字典破解(Dictionary Attack)和暴力破解(Brute Force Attack)情势。那二种形式轻巧易行正是猜密码。

金沙澳门官网 2 

      字典破解和暴力破解都以效能十分低的破解情势。倘让你领悟了数据库中密码的哈希值,你就足以选拔风华正茂种越来越快捷的破解情势,查表法(Lookup Tables)。还也有局地办法,比方逆向查表法(Reverse Lookup Tables)、彩霓表(Rainbow Tables)等,都和查表法大同小异。未来大家来看一下查表法的规律。

     查表法不像字典破解和暴力破解那样猜密码,它首先将一些比较常用的密码的哈希值算好,然后建设布局一张表,当然密码更加多,这张表就越大。当您精通有个别密码的哈希值时,你只须要在您建构好的表中查找该哈希值,假诺找到了,你就了然对应的密码了。

 金沙澳门官网 3

7   为啥使用hash来加密

假定你要求保留密码(比方网址客户的密码),你要思索什么维护那些密码数据,象上面那样直接将密码写入数据库中是极不安全的,因为其它能够展开数据库的人,都将得以一贯看出这几个密码。

金沙澳门官网 4

化解的法子是将密码加密后再囤积进数据库,比较常用的加密方法是利用哈希函数(Hash Function)。哈希函数的现实性定义,大家能够在网络依然有关书籍中查阅到,轻易地说,它的表征如下:

(1)原始密码经哈希函数计算后获得二个哈希值

(2)校订原本密码,哈希函数总结出的哈希值也会相应改换

(3) 同样的密码,哈希值也是同大器晚成的

(4) 哈希函数是单向、不可逆的。也正是说从哈希值,你不能推算出原始的密码是稍稍

有了哈希函数,大家就可以将密码的哈希值存款和储蓄进数据库。客户登陆网址的时候,大家能够查看客商输入密码的哈希值是还是不是与数据库中的哈希值相像。

金沙澳门官网 5

由于哈希函数是不可逆的,即使有人张开了数据库,也力不能支看见顾客的密码是微微。

那正是说存储经过哈希函数加密后的密码是或不是就是平安的了啊?参照六、发掘并不安全,唯有加上salt才安全,因为salt是随机生成的。

8   版权

 

  • 多谢您的阅读,若有白璧微瑕,接待指教,共同学习、协作提高。
  • 博主网站:
  • 极少一些小说利用读书、参照他事他说加以调查、引用、抄袭、复制和粘贴等八种方式组成而成的,大多数为原创。
  • 如您爱怜,麻烦推荐一下;如你有新主见,迎接提出,邮箱:二〇一五177728@qq.com。
  • 能够转发该博客,但必须要有名博客来源。

本文由金沙澳门官网发布于网络编程,转载请注明出处:C# salt hash 加密

关键词: 金沙澳门官网

上一篇:气象查询
下一篇:没有了