Hashing و Encryption هردو روشهایی برای رمزنگاری هستند، نکته قابل توجه این است که هنگامی که متنی را Hash میکنید دیگر روش سادهای تحت عنوان dehash کردن آن وجود ندارد و شما برای اینکه متنی را با آن مقایسه بکنید مجبورید آن متن را با همان شیوه Hash کنید و سپس با متن hash شده مقایسه نمایید، در صورتی که یک متن Encrypt شده را میتوانید Decrypt کرده و با یک متن دیگر مقایسه کنید.
احتمالا میدانید که روشهای Encryption مختلفی وجود دارند، در اینجا من کدی را که سالها پیش با استفاده از الگوریتم SHA و با VB.NET نوشته بودم در اختیارتان میگذارم:
Imports System.Security.Cryptography
Imports System.Text
.
.
.
Public Function GetEncryptedData(ByVal Data As String) As String
Dim shaM As New SHA1Managed
Convert.ToBase64String(shaM.ComputeHash(Encoding.ASCII.GetBytes(Data)))
Dim eNC_data() As Byte = ASCIIEncoding.ASCII.GetBytes(Data)
Dim eNC_str As String = Convert.ToBase64String(eNC_data)
Return eNC_str
End Function
Public Function GetDecryptedData(ByVal Data As String) As String
Dim dEC_data() As Byte = Convert.FromBase64String(Data)
Dim dEC_Str As String = ASCIIEncoding.ASCII.GetString(dEC_data)
Return dEC_Str
End Function
همانطور که ملاحظه کردید دو تابع به منظور Encrypt مردن و Decrypt کردن در کد فوق نوشته شدهاست.
در مورد Hashing که معمولا برای نگهداری passeord ها استفاده میشود یکی از روشها استفاده از System.Web.Security است:
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(txtPwd.Text, "MD5").ToString()
همانطور که ملاحظه کردید من از MD5 به عنوانت فرمت Hashing استفاده کردم