用HashAlgorithm來加强數據的保險程度。
(華版)
由于很多應用程序已用互聨網作為执行時的平台,而現在的黑客也越來越猖獗。所以我們不能不把我們所傳送的資料和數據加密。特别是一般的登录密碼,往往很多程序員都忽略了這一點;而就直接把用户所輸入的密碼用HTTP-POST方法來傳送回去服務端验証。
另一方面,收藏在數據庫里的用户登录密碼也應該把它稍微Hashes一下。這样就能保証你的用户登录密碼没那么容易就被泄漏或被盗用嘛。
在.NET Framework里就提供了HashAlgorithm這样的一個Class,好讓我們能够以很輕易的就可以把一些字符串(例如用户登录密碼)hashes起來;然后再把它轉去Base64的字符串,這样就可以在HTTP-POST里通往無阻了。而且還可以從五種算法中(SHA-1,SHA-256,SHA-384,SHA-512和MD5)選出一個所適合我們的應用程序需求。
注意:
當一個字符串進行了Hashes,就永不能decrypted回原本的字符串。
Private Function GetHashDataString(ByVal source As String, ByVal hashAlgorithm As String) As String
Try
'// 聲明變量。
Dim SourceInByte() As Byte
Dim HashedInByte() As Byte
Dim HashedInBase64 As String
Dim HashAlgo As HashAlgorithm
'// 檢查所指定的Hash算法。
Select Case hashAlgorithm
Case "SHA1"
'// 實例SHA1Managed對象。
HashAlgo = New SHA1Managed
Case "SHA256"
'// 實例SHA256Managed對象。
HashAlgo = New SHA256Managed
Case "SHA384"
'// 實例SHA384Managed對象。
HashAlgo = New SHA384Managed
Case "SHA512"
'// 實例SHA512Managed對象。
HashAlgo = New SHA512Managed
Case "MD5"
'// 實例MD5CryptoServiceProvider對象。
HashAlgo = New MD5CryptoServiceProvider
Case Else
'// 設定默認遞回值數。
Return ""
End Select
'// 把source字符串轉去UNICODE字節數组。
SourceInByte = Encoding.ASCII.GetBytes(source)
'// 計算HASH字節數组。
HashedInByte = HashAlgo.ComputeHash(SourceInByte)
'// 把HASH字節數组轉去Base64字符串。
HashedInBase64 = Convert.ToBase64String(HashedInByte)
'// 設定遞回值數。
Return HashedInBase64
Catch ex As Exception
'// 設定默認遞回值數。
Return ""
End Try
End Function
Try
'// 聲明變量。
Dim SourceInByte() As Byte
Dim HashedInByte() As Byte
Dim HashedInBase64 As String
Dim HashAlgo As HashAlgorithm
'// 檢查所指定的Hash算法。
Select Case hashAlgorithm
Case "SHA1"
'// 實例SHA1Managed對象。
HashAlgo = New SHA1Managed
Case "SHA256"
'// 實例SHA256Managed對象。
HashAlgo = New SHA256Managed
Case "SHA384"
'// 實例SHA384Managed對象。
HashAlgo = New SHA384Managed
Case "SHA512"
'// 實例SHA512Managed對象。
HashAlgo = New SHA512Managed
Case "MD5"
'// 實例MD5CryptoServiceProvider對象。
HashAlgo = New MD5CryptoServiceProvider
Case Else
'// 設定默認遞回值數。
Return ""
End Select
'// 把source字符串轉去UNICODE字節數组。
SourceInByte = Encoding.ASCII.GetBytes(source)
'// 計算HASH字節數组。
HashedInByte = HashAlgo.ComputeHash(SourceInByte)
'// 把HASH字節數组轉去Base64字符串。
HashedInBase64 = Convert.ToBase64String(HashedInByte)
'// 設定遞回值數。
Return HashedInBase64
Catch ex As Exception
'// 設定默認遞回值數。
Return ""
End Try
End Function
點撃下載代碼。