亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# salt+hash 加密

2019-10-29 21:15:55
字體:
來源:轉載
供稿:網友

一、先明確幾個基本概念

1、偽隨機數:pseudo-random number generators ,簡稱為:PRNGs,是計算機利用一定的算法來產生的。偽隨機數并不是假隨機數,這里的“偽”是有規律的意思,就  是計算機產生的偽隨機數既是隨機的又是有規律的。怎樣理解呢?產生的偽隨機數有時遵守一定的規律,有時不遵守任何規律;偽隨機數有一部分遵守一定的規律;另一部分不遵守任何規律。比如“世上沒有兩片形狀完全相同的樹葉”,這正是點到了事物的特性,即隨機性,但是每種樹的葉子都有近似的形狀,這正是事物的共性,即規律性。從這個角度講,你大概就會接受這樣的事實了:計算機只能產生偽隨機數而不能產生絕對隨機的隨機數。

2、真隨機數:true random number generators ,簡稱為:TRNGs,是利用不可預知的物理方式來產生的隨機數。

3、明文:原始密碼,未經過任何算法加密的密碼。

4、密文:原始密碼經過某種算法加密后,形成的密碼。

二、C# salt+hash加密規則

規則:salt偽隨機值+原始密碼,即salt偽隨機值與原始密碼組合成明文,然后經過hash算法形成密文,如:

      假設salt產生的偽隨機數為:9de74893-0b41-4f4e-91dc-06f62241b8bc

      原始明文為:admin

      組合規則:原始明文+salt偽隨機值,即admin9de74893-0b41-4f4e-91dc-06f62241b8bc

      hash加密后密文:urfFO/IWz912E2GXL4KiCzbosuZ6TdLpMk7lDRVVdYk=

      數據庫表結果如下:

C#,加密

三、C# salt產生偽隨機數原理

   第一步:引入命名空間 using System;

   第二步:調用結構體Guid的NewGuid()方法;

   第三步:代碼表示 string strSalt = Guid.NewGuid().ToString(); 

   注釋:當然,也可以調用類Random下的方法來產生偽隨機數。

四、hash原理

hash是一種不可逆加密算法,C# HASH算法比較多,列舉幾種如下:

   1、MD5

   2、SHA家族:這里順便提一下,美國政府以前廣泛采用SHA-1算法,在2005年被我國山東大學的王小云教授發現了安全漏洞,所以現在比較常用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>");  }     } }

五、C#常見加密算法

MD5加密、SHA家族加密、RSA加密、DES加密,目前主流加密為RSA,如數字簽名等,在本篇博客中,就不論述,以后會對這四類算法作詳細論述。

六、常見密碼破解算法

最簡單、常見的破解方式當屬字典破解(Dictionary Attack)和暴力破解(Brute Force Attack)方式。這兩種方法說白了就是猜密碼。

C#,加密

字典破解和暴力破解都是效率比較低的破解方式。如果你知道了數據庫中密碼的哈希值,你就可以采用一種更高效的破解方式,查表法(Lookup Tables)。還有一些方法,比如逆向查表法(Reverse Lookup Tables)、彩虹表(Rainbow Tables)等,都和查表法大同小異?,F在我們來看一下查表法的原理。

查表法不像字典破解和暴力破解那樣猜密碼,它首先將一些比較常用的密碼的哈希值算好,然后建立一張表,當然密碼越多,這張表就越大。當你知道某個密碼的哈希值時,你只需要在你建立好的表中查找該哈希值,如果找到了,你就知道對應的密碼了。

C#,加密

七、為什么使用hash來加密(引用http://www.49028c.com/article/102918.htm

如果你需要保存密碼(比如網站用戶的密碼),你要考慮如何保護這些密碼數據,象下面那樣直接將密碼寫入數據庫中是極不安全的,因為任何可以打開數據庫的人,都將可以直接看到這些密碼。

C#,加密

解決的辦法是將密碼加密后再存儲進數據庫,比較常用的加密方法是使用哈希函數(Hash Function)。哈希函數的具體定義,大家可以在網上或者相關書籍中查閱到,簡單地說,它的特性如下:

(1)原始密碼經哈希函數計算后得到一個哈希值

(2)改變原始密碼,哈希函數計算出的哈希值也會相應改變

(3) 同樣的密碼,哈希值也是相同的

(4) 哈希函數是單向、不可逆的。也就是說從哈希值,你無法推算出原始的密碼是多少

有了哈希函數,我們就可以將密碼的哈希值存儲進數據庫。用戶登錄網站的時候,我們可以檢驗用戶輸入密碼的哈希值是否與數據庫中的哈希值相同。

C#,加密

由于哈希函數是不可逆的,即使有人打開了數據庫,也無法看到用戶的密碼是多少。

那么存儲經過哈希函數加密后的密碼是否就是安全的了呢?參照六、發現并不安全,只有加上salt才安全,因為salt是隨機生成的。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持VEVB武林網!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美第一淫aaasss性| 日韩精品一区二区视频| 国产精品三级美女白浆呻吟| 国产热re99久久6国产精品| 成人黄色午夜影院| 欧美怡春院一区二区三区| 亚洲国产天堂久久综合| 日韩av黄色在线观看| 超碰91人人草人人干| 久久精品国产电影| 欧美极品欧美精品欧美视频| 久久免费精品日本久久中文字幕| 色爱av美腿丝袜综合粉嫩av| 欧美激情免费视频| 日韩欧美精品中文字幕| 日韩av三级在线观看| 91精品国产电影| 欧美成人午夜视频| 欧美日韩亚洲91| 国产成人激情小视频| 亚洲剧情一区二区| 成人网在线免费观看| 这里只有精品视频| 精品av在线播放| 欧美在线欧美在线| 成人性生交大片免费观看嘿嘿视频| 国产精品99久久99久久久二8| 亚洲男人的天堂在线播放| 欧美区二区三区| 91国产美女在线观看| 日韩高清av一区二区三区| 亚洲free性xxxx护士hd| 中文字幕一区日韩电影| 欧美乱妇高清无乱码| 黑人巨大精品欧美一区免费视频| 日韩网站免费观看| 久久国产精品久久久| 精品久久久久久久久久久| 亚洲精品白浆高清久久久久久| 亚洲精品一区中文| 亚洲精品一区二区网址| 欧美肥臀大乳一区二区免费视频| 欧美性少妇18aaaa视频| 久久九九国产精品怡红院| 日韩免费观看在线观看| 日韩电影大片中文字幕| 欧美限制级电影在线观看| 亚洲精品一区中文字幕乱码| 欧美日韩久久久久| 欧美精品精品精品精品免费| 欧美激情视频一区二区| 欧美性极品xxxx娇小| 国产精品久久久久999| 亚洲v日韩v综合v精品v| 欧美性xxxxxx| 日韩精品视频三区| 91在线看www| 国产精品久久久久久久9999| 国产精品稀缺呦系列在线| 日av在线播放中文不卡| 亚洲激情视频在线| 国产精品久久久av| 国产视频999| 欧美性猛交xxxx免费看| 国产精品毛片a∨一区二区三区|国| 久久成人精品一区二区三区| 亚洲天堂网在线观看| 欧美激情视频网站| 亚洲午夜未满十八勿入免费观看全集| 国内精品美女av在线播放| 亚洲高清免费观看高清完整版| 国产成人精品免高潮费视频| 欧美日韩美女视频| 欧美人与性动交a欧美精品| 国产精品精品视频一区二区三区| 亚洲精品美女在线观看播放| 一区二区在线免费视频| 欧美大片第1页| 久久久中精品2020中文| 精品呦交小u女在线| 国产91|九色| 日韩美女在线观看一区| 97视频免费在线观看| 91久久久久久久久久久| 一区二区三区视频在线| 久久97精品久久久久久久不卡| 久久亚洲精品网站| 亚洲精品自拍第一页| 亚洲欧美日韩第一区| 欧美专区在线播放| 国产精品日日摸夜夜添夜夜av| 久久色免费在线视频| 成人黄色av网| 中文字幕亚洲一区| 欧美性极品少妇精品网站| 欧美极品少妇全裸体| 国产精品视频白浆免费视频| 国产精品久久久久久久久| 国产91在线播放九色快色| 亚洲精品福利资源站| 国产欧美久久一区二区| 中文字幕国产亚洲| 亚洲第一网中文字幕| 日韩成人小视频| 久久天天躁狠狠躁老女人| 国产精品对白刺激| 久久影视电视剧免费网站| 91成人在线播放| 欧美日韩成人网| 久久久久久久激情视频| 欧美成人精品在线| 亚洲香蕉在线观看| 97精品国产97久久久久久| 国产视频一区在线| 日韩av网址在线| 成人在线视频网站| 亚洲天堂一区二区三区| 亚洲全黄一级网站| 亚洲 日韩 国产第一| 亚洲肉体裸体xxxx137| 亚洲国产精品系列| 日韩a**中文字幕| 97久久精品视频| 亚洲国产精品电影在线观看| 国产精品一区二区久久| 亚洲视频在线视频| 日韩高清电影免费观看完整| 日韩免费在线观看视频| 57pao成人永久免费视频| 久久人人爽亚洲精品天堂| 一个人看的www久久| 亚洲一品av免费观看| 国产精品普通话| 日韩精品免费在线视频观看| 国产主播在线一区| 奇米成人av国产一区二区三区| 中文字幕v亚洲ⅴv天堂| 97人人做人人爱| 亚洲精品视频在线播放| 国模极品一区二区三区| 国产精品嫩草影院一区二区| 麻豆乱码国产一区二区三区| 91系列在线观看| 91极品视频在线| 国产精品视频专区| 国产欧美日韩精品在线观看| 成人妇女免费播放久久久| 亚洲国产精品免费| 国产日韩精品在线观看| 国产一区二区三区精品久久久| 亚洲精品成人久久久| 欧美精品在线看| 午夜精品一区二区三区在线视| 国产精品视频1区| 91爱爱小视频k| 国产精品久久久久久久久久免费| 91国语精品自产拍在线观看性色| 成人激情电影一区二区| 国产成人精品久久| 在线亚洲欧美视频| 国产精品情侣自拍| 欧美性猛交xxxx偷拍洗澡| 2019最新中文字幕| 亚洲最新视频在线|