我們在未使用Crypto類別前,必須手動撰寫程式碼:
''' <summary> ''' 密碼進行SHA1加密 ''' </summary> ''' <param name="str">密碼</param> ''' <returns>SHA1加密後字串</returns> ''' <remarks></remarks> Private Function HashPassword(str As String) As String Dim rethash As String = "" Dim hash As System.Security.Cryptography.SHA1 = System.Security.Cryptography.SHA1.Create() Dim encoder As New System.Text.ASCIIEncoding() Dim combined As Byte() = encoder.GetBytes(str) hash.ComputeHash(combined) rethash = Convert.ToBase64String(hash.Hash) Return rethash End Function
現在我們改變需求,想要改使用MD5就好?後來又想,還是安全點好,又想改使用SHA256,改到最後,能不能讓我自己選擇加密演算法?
現在使用Crypto類別,把相關加密演算法再一次包裝,讓我們可以更方便就能使用這些加密演算法,使用方法很簡單:
' 依傳入的數值,產生亂數字串,預設值16 ' 例如:tSea8lnjrMOXu6idzV3kmA==,每次產生會不一樣 ViewBag.GenerateSalt = Crypto.GenerateSalt() ' 預設加密演算法 sha256 ' KKBruce加密後: D85385CBDE31076D8E4933D3D221373264D2904CF7AF97273A57C1989527C431 ViewBag.Hash = Crypto.Hash("KKBruce") ' 指定加密演算法 ' KKBruce加密後: 9C56ACC0AF06D1F7355048B54B8C256E ViewBag.HashMD5 = Crypto.Hash("KKBruce", "md5") ' 使用 sha1SHA1 加密演算法 ' KKBruce加密後: 897AD572561960D4A03B1EE128E03252A81A89C4 ViewBag.HashSHA1 = Crypto.SHA1("KKBruce") ' 等於使用 Crypto.Hash("String") ' KKBruce加密後: D85385CBDE31076D8E4933D3D221373264D2904CF7AF97273A57C1989527C431 ViewBag.HashSHA256 = Crypto.SHA256("KKBruce") ' 回傳base-64加密字串 ' KKBruce加密後: AN4fRENuQOoRctTasprxrkM7ba+ixadD9MSY0aWFnn7hbx1mvFFQqvNlxNz2D1ya0w== ViewBag.HashPassword = Crypto.HashPassword("KKBruce") ' 驗證Hash Dim hashedPassword As String = Crypto.HashPassword("KKBruce") ' True ViewBag.VerifyHashedPassword1 = Crypto.VerifyHashedPassword(hashedPassword, "KKBruce") ' False ViewBag.VerifyHashedPassword2 = Crypto.VerifyHashedPassword(hashedPassword, "Bruce")
不管是加密或驗證密碼,透過Crypto類別幫忙之後簡化複雜度。
參考:
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。