PDA

View Full Version : آموزش: Hashing و Encryption



Alireza.AM
دوشنبه 11 دی 1391, 23:04 عصر
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.A SCII.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 که معمولا برای نگهداری password ها استفاده می‌شود یکی از روشها استفاده از System.Web.Security است:

System.Web.Security.FormsAuthentication.HashPasswo rdForStoringInConfigFile(txtPwd.Text, "MD5").ToString()


همانطور که ملاحظه کردید من از MD5 به عنوانت فرمت Hashing استفاده کردم

danialafshari
دوشنبه 11 دی 1391, 23:28 عصر
اینجا تالار C#‎ لطفا کد C#‎ قرار دهید

Convert to C#‎ :
using System.Security.Cryptography;
using System.Text;


public string GetEncryptedData(string Data) {
SHA1Managed shaM = new SHA1Managed();
Convert.ToBase64String(shaM.ComputeHash(Encoding.A , SCII.GetBytes(Data)));
byte[] eNC_data = ASCIIEncoding.ASCII.GetBytes(Data);
string eNC_str = Convert.ToBase64String(eNC_data);
return eNC_str;
}

public string GetDecryptedData(string Data) {
byte[] dEC_data = Convert.FromBase64String(Data);
string dEC_Str = ASCIIEncoding.ASCII.GetString(dEC_data);
return dEC_Str;
}

System.Web.Security.FormsAuthentication.HashPasswo rdForStoringInConfigFile(txtPwd.Text, "MD5").ToString();

Alireza.AM
دوشنبه 11 دی 1391, 23:35 عصر
بله حق با شماست.
خیلی معذرت میخوام. مثل اینکه عجله کردم #C و VB قاطی شد. متوجه نشدم که VB نوشتم.
ممنون از تبدیل کد.