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

首頁 > 數據庫 > Access > 正文

使用MD5加密數據庫中的用戶密碼(一)

2024-09-07 19:04:03
字體:
來源:轉載
供稿:網友
我們知道,現在網絡上一般的網站,稍微完善一點的,往往都需要用戶先注冊,提供諸如電子郵件、賬號、密碼等信息以后,成為網站欄目的注冊用戶,才可以享受網站一些特殊欄目提供的信息或者服務,比如免費電子郵件、論壇、聊天等,都需要用戶注冊。而對于電子商務網站,比如igo5等大型電子商務網站,用戶需要購買商品,就一定需要詳細而準確的注冊,而這些信息,往往是用戶很隱秘的信息,比如電話、電子郵件、地址等,所以,注冊信息對于用戶和網站都是很重要的資源,不能隨意透露,更加不能存在安全上的隱患。
如果我們也設計一個需要用戶注冊的網站,根據現在的常用技術實現方法,可以在數據庫中建立一個用于存放用戶信息的表,這個表中至少包括用戶賬號字段:UserAccount和用戶密碼字段:Password,當然,實際應用中一個用戶信息表不可能就只有這些信息,往往根據網站服務要求,會適當增加一些其他的信息,以方便網站提供更加完善的服務。一般的,一個用戶信息占用這個用戶信息表的一行也就是一個數據記錄,當用戶登錄或者提交資料的時候,程序將用戶填寫的信息與表中的信息對照,如果用戶賬號和密碼都準確無誤,那么說明這個用戶是合法用戶,通過注冊;反之,則是非法用戶,不許通過。
然而,是不是這樣就安全了了?是不是這樣就能滿足網站的注冊要求了呢?仔細想想,我們一般將用戶資料直接保存在數據庫中,并沒有進行任何的保密措施,對于一些文件型數據庫比如Access等,如果有人得到這個文件,豈不是所有的資料都泄露無疑?更加重要的是,如果一個不負責任的網管,不需要任何技術手段,就可以查看網站中的任何資料,如果我們的用戶信息在數據庫中沒有加密,對于網管而言,查看這些信息是太簡單了。所以,為了增加安全性,我們有必要對數據庫中的資料進行加密,這樣,即使有人得到了整個數據庫,如果沒有解密算法,也一樣不能查看到數據庫中的用戶信息。但是,在考慮數據庫是否安全之前,我們有必要對我們的數據是否真的那么重要進行考慮,如果數據只是簡單的一些文件資料,沒有保密的必要,顯然,沒有必要對這些數據進行加密而浪費系統資源、加重程序負擔,如果這些數據具有一定的隱私性,當然就有必要進行加密。所以,在考慮加密以前,我們可以對需要加密的數據做適當的選擇,以免浪費系統資源。

MD5加密算法簡單介紹
在現階段,我們一般認為存在兩種加密方式,單向加密和雙向加密。雙向加密是加密算法中最常用的,它將我們可以直接理解的明文數據加密為我們不可直接理解的密文數據,然后,在需要的時候,可以使用一定的算法將這些加密以后的密文解密為原來可以理解的明文。雙向加密適合于隱秘通訊,比如,我們在網上購物的時候,需要向網站提交信用卡密碼,我們當然不希望我們的數據直接在網上明文傳送,因為這樣很可能被別的用戶“偷聽”,我們希望我們的信用卡密碼是通過加密以后,再在網絡傳送,這樣,網站接受到我們的數據以后,通過解密算法就可以得到準確的信用卡賬號。
單向加密剛好相反,只能對數據進行加密,也就是說,沒有辦法對加密以后的數據進行解密??赡芪覀兞⒓淳蜁?,這樣的加密有什么用處?不能解密的加密算法有什么作用呢?在實際中的一個應用就是數據庫中的用戶信息加密,當用戶創建一個新的賬號或者密碼,他的信息不是直接保存到數據庫,而是經過一次加密以后再保存,這樣,即使這些信息被泄露,也不能立即理解這些信息的真正含義。
MD5就是采用單向加密的加密算法,對于MD5而言,有兩個特性是很重要的,第一是任意兩段明文數據,加密以后的密文不能是相同的;第二是任意一段明文數據,經過加密以后,其結果必須永遠是不變的。前者的意思是不可能有任意兩段明文加密以后得到相同的密文,后者的意思是如果我們加密特定的數據,得到的密文一定是相同的。
MD5CyptoServiceProvider類是.NET中System.Security.Cryptography名字空間的一個類,提供專門用于MD5單向數據加密的解決方法,也是本文中我們用來加密數據庫中密碼的類。在真正進行數據加密之前,我們首先來了解MD5CyptoServiceProvider類中的主要方法:ComputeHash,它將輸入的明文數據數組使用MD5加密以后輸出加密后的密文數據數組?,F在,我們就來看一個具體的實例:
'要加密的明文字符串
Dim strPlainText as String = "Encrypt me!"
'用于存放明文字符串的數組
Dim hashedDataBytes as Byte()
Dim encoder as New UTF8Encoding()
'建立MD5CryptoService實例
Dim md5Hasher as New MD5CryptoServiceProvider()
'加密運算
hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(strPlainText))
看完以上的具體實例以后,我們知道,ComputeHash方法只能接受數組作為加密對象,輸出的密文也是數組,因此,在對字符串加密之前,我們必須首先將這些字符串轉化為數組,這就要用到UTF8Encoding類的GetBytes方法,將字符串轉化為數組,而加密以后的結果也是使用數組輸出。
以上我們大致了解了MD5的具體加密實現方法,下面,我們結合數據庫來看看MD5的實際使用。

使用MD5存儲密碼
在前面的介紹中,我們提到網站往往將用戶的賬號、密碼等信息使用非加密的方式保存到數據庫,比如賬號使用類型為VarChar的UserCount字段,同樣,密碼也是采用類型為VarChar的Password字段。但是,如果我們打算采用MD5加密方式存儲密碼信息,就必須改變密碼字段PassWord的類型為16為二進制方式,這個其實我們也不難理解,因為在前面的介紹中,我們知道加密以后的輸出,是使用二進制數組的,所以,這里必須做相應的改變。
當用戶注冊成功,正式建立一個賬號的時候,數據庫中就必須為這個用戶增加一條記錄。以下的程序代碼實現了建立一個賬號的功能,在頁面中,程序要求用戶輸入賬號、密碼等信息,然后,將這些信息作為賬號信息存入名為UserCount的數據表,在這個表中,用戶密碼是使用MD5加密保存的。下面就是實現以上頁面的具體代碼:
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<Script runat="server" language="VB">
Sub CreateAccount(sender as Object, e as EventArgs)
'1. 建立數據庫連接
Const strConnString as String = "connection string"
Dim objConn as New SqlConnection(strConnString)
'2. 建立Command對象
Dim strSQL as String = _
"INSERT INTO UserAccount(Username,Password) " & _
"VALUES(@Username, @Password)"
Dim objCmd as New SqlCommand(strSQL, objConn)
'3. SQL參數
Dim paramUsername as SqlParameter
paramUsername= New SqlParameter("@Username", SqlDbType.VarChar, 25)
paramUsername.Value = txtUsername.Text
objCmd.Parameters.Add(paramUsername)
'加密用戶密碼
Dim md5Hasher as New MD5CryptoServiceProvider()
Dim hashedBytes as Byte()
Dim encoder as New UTF8Encoding()
hashedBytes=md5Hasher.ComputeHash(encoder.GetBytes(txtPwd.Text))
Dim paramPwd as SqlParameter
paramPwd = New SqlParameter("@Password", SqlDbType.Binary, 16)
paramPwd.Value = hashedBytes
objCmd.Parameters.Add(paramPwd)
'加入數據庫
objConn.Open()
objCmd.ExecuteNonQuery()
objConn.Close()
End Sub
</script>
<Form runat="server">
<h1>建立一個賬號</h1>
用戶名:<asp:TextBox runat="server" id="txtUsername" />
<br />密碼:
<asp:TextBox runat="server" id="txtPwd" TextMode="Password" />
<p><asp:Button runat="server" Text="建立用戶賬號" onClick="CreateAccount" /></p>
</form>
在以上程序實現的頁面中,“用戶名”和“密碼”輸入框要求用戶輸入自己的賬號和密碼,用戶輸入自己的信息以后,按“建立用戶賬號”按鈕,就可以建立一個賬號并且存入數據庫。我們同時需要特別注意,因為以上的程序使用到了MD5加密和數據庫等功能,所以,在代碼最開頭,我們引入了幾個稍微特別一點的名字空間,這是不可缺少的。
我們可以看到,PassWord字段的信息是二進制方式保存的,即使數據庫被人取得,也不可能知道密碼具體是什么意思。當然,密碼也就不會泄露。
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91久久中文字幕| 中文字幕亚洲无线码在线一区| 九九久久久久久久久激情| 高清欧美性猛交xxxx黑人猛交| 国产精品中文字幕久久久| 中文字幕日韩av电影| 欧美另类xxx| 亚洲国内精品视频| 国产日韩欧美在线播放| 伊人久久久久久久久久| 色一区av在线| 高清欧美性猛交xxxx黑人猛交| 丁香五六月婷婷久久激情| 午夜精品久久久久久久久久久久久| 国产九九精品视频| 欧美极品少妇xxxxⅹ喷水| 久久高清视频免费| 亚洲久久久久久久久久| 欧美日韩裸体免费视频| 亚洲国产精品久久| 欧美日本中文字幕| 成人午夜黄色影院| 97色在线视频观看| 91视频国产一区| 欧美日韩爱爱视频| 亚洲无亚洲人成网站77777| 亚洲午夜av久久乱码| 麻豆乱码国产一区二区三区| 日韩在线观看高清| 精品视频在线播放免| 精品久久久久人成| 久久免费观看视频| 日韩色av导航| 国产精品国模在线| 97在线观看视频| 欧美性xxxxx极品| 日韩电影中文字幕av| 亚洲伊人第一页| 成人欧美一区二区三区黑人| 国产日韩欧美在线播放| 奇米四色中文综合久久| 97精品久久久| 91经典在线视频| 欧美激情国产精品| 欧美另类xxx| 国产97在线播放| 中文字幕九色91在线| 日韩精品视频免费专区在线播放| 北条麻妃久久精品| 成人国产精品一区二区| 尤物九九久久国产精品的分类| 亚洲人成网7777777国产| 亚洲国产小视频在线观看| 国产精品黄页免费高清在线观看| 久久久精品国产一区二区| 91豆花精品一区| 日本一区二区三区四区视频| 久久久噜久噜久久综合| 成人免费xxxxx在线观看| 亚洲精品98久久久久久中文字幕| 日韩欧美a级成人黄色| 久久国产精品久久精品| 国产成人97精品免费看片| 一区二区三区精品99久久| 91免费版网站入口| 黑人巨大精品欧美一区二区| 日韩国产中文字幕| 欧美日韩国产一区二区三区| 日本午夜在线亚洲.国产| 精品久久久中文| 国产剧情久久久久久| 亚洲精品98久久久久久中文字幕| 91精品国产高清久久久久久91| 久久久久久久成人| 亚洲第一福利网| 精品成人av一区| 国产精品久久久久久久7电影| 亚洲欧美日韩一区二区在线| 欧美激情精品久久久久久免费印度| 欧美成人h版在线观看| 亚洲爱爱爱爱爱| 成人国产精品色哟哟| 欧美午夜视频一区二区| 91九色综合久久| 精品国产一区二区三区久久久狼| 丁香五六月婷婷久久激情| 日韩在线免费观看视频| 欧美性生交大片免费| 国产精品一香蕉国产线看观看| 欧美性受xxxx黑人猛交| 亚洲免费精彩视频| 91久久久久久久一区二区| 久久久精品美女| 成人激情免费在线| 神马国产精品影院av| 激情懂色av一区av二区av| 欧美大码xxxx| 欧美电影免费看| 91国产视频在线播放| 黄网动漫久久久| 欧美电影免费看| 欧美一二三视频| 亚洲国产精久久久久久久| 91久久久久久久| 国内伊人久久久久久网站视频| 日韩电影中文字幕av| 成人免费视频xnxx.com| 日韩欧美国产高清91| 日韩经典一区二区三区| 亚洲免费电影一区| 一区国产精品视频| 日韩在线免费av| 在线观看日韩专区| 日韩中文在线中文网三级| 国产成人精品免费视频| 亚洲国产日韩欧美在线99| 亚洲精品98久久久久久中文字幕| 国产精品吹潮在线观看| 日韩中文av在线| 亚洲国产精品va在线看黑人动漫| 亚洲精品黄网在线观看| 97婷婷大伊香蕉精品视频| 人人澡人人澡人人看欧美| 国产91成人video| 亚洲色图25p| 日韩美女在线播放| 亚洲人成77777在线观看网| 欧美老女人bb| 91久久精品国产91久久性色| 日韩电视剧在线观看免费网站| 成人亚洲激情网| 中文字幕视频一区二区在线有码| 68精品久久久久久欧美| 国产成人精品电影| 日韩在线视频一区| 精品无人区太爽高潮在线播放| 91地址最新发布| 亚洲精品v欧美精品v日韩精品| 亚洲另类图片色| 亚洲成人国产精品| 国产欧美在线观看| 欧洲永久精品大片ww免费漫画| 久久久女人电视剧免费播放下载| 日韩精品中文在线观看| 黄色成人在线免费| 北条麻妃一区二区三区中文字幕| 久久久久在线观看| 国产日韩在线精品av| 综合欧美国产视频二区| 亚洲国产第一页| 欧美丝袜美女中出在线| 国产精品99久久久久久白浆小说| 亚洲色图美腿丝袜| 亚洲午夜未满十八勿入免费观看全集| 国产精品男人爽免费视频1| 亚洲最新中文字幕| 国产免费一区二区三区香蕉精| 国产亚洲美女久久| 久久国产精品久久久久久| 最近中文字幕日韩精品| 久久99国产精品久久久久久久久| 欧美怡红院视频一区二区三区| 久久久久久国产精品美女| 国产精品99久久久久久久久|