mahyar_nel
Active Member
Hashing در #C
ASP.NET روش مناسبي براي ايجاد رشته هاي Hash شده از مقادير ورودي كاربر تدارك ديده است . اگر شما بخواهيد كه كلمه رمزتان را به صورت معمولي در Database يا فايل ذخيره كنيد ؛ در صورتيكه هكري بتواند به آن فايل يا Database دسترسي پيدا كند به راحتي مي تواند به اين كلمات رمز دسترسي داشته باشد و از آنها استفاده نمايد . بنابراين براي مخفي سازي كلمات رمز كاربران در Database مي توان يك مقدار Hash شده از آن كلمه رمز ايجاد كرد و آن را در Database ذخيره نمود . فايده اين كار اين است كه حتي در صورتيكه فردي به اين مقدار Hash شده دسترسي پيدا كند باز نمي تواند از آن استفاده نمايد و به محتواي آن پي ببرد .همچنين اشكال اين روش اين است كه در صورتيكه كاربر كلمه رمز خود را فراموش كند بازيابي آن بسيار مشكل خواهد بود .
چگونگي اعتبارسنجي با استفاده از كلمه رمز درهم سازي شده
در شرايط معمول وقتي شما كلمه رمز را در Database به شكل واقعي آن ذخيره مي كيد ، شما مي توانيد به راحتي با پيداكردن كلمه رمز مربوط به آن نام كاربري در Database و مقايسه آن با كلمه رمز ورودي كاربر اعتبار اطلاعات ورودي را مشخص كنيد . بديهي است كه اعتبارسنجي با استفاده از كلمات رمز Hash شده كمي مشكل تر از اين روش معمول مي باشد . براي اين كار شما يك مقدار Hash شده از كلمه رمز ورودي كاربر بايد ايجاد نماييد و سپس باكلمه رمزHash شده اي كه قبلاً در Database ذخيره شده است مقايسه كنيد ، اگر هر دو رشته Hash شده با هم برابر باشند در اين صورت اعتبار كاربر تاييد مي شود .
براي مثال :
string strUserInputtedHashedPassword =
FormsAuthentication.HashPasswordForStoringInConfigFile(tbPassword.Text, "sha1");
if (strUserInputtedHashedPassword == GetUsersHashedPasswordUsingUserName(tbUserName.Text))
{
// sign-in successfull
}
else
{
// sign-in failed
}
حال شما مي توانيد با استفاده از اين كد ها يك نمونه كلمات درهم سازي شده براي خود ايجاد نماييد:
protected TextBox tbPassword;
protected Literal liHashedPassword;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}
public void btnHash_Click(object sender, EventArgs e)
{
if (tbPassword.Text.Length > 0)
{
string strHashedPassword = FormsAuthentication.HashPasswordForStoringInConfigFile (tbPassword.Text, "sha1");
liHashedPassword.Text = "Hashed Password is: " + strHashedPassword;
}
}
به نمونه هاي زير توجه نماييد .
415AB40AE9B7CC4E66D6769CB2C08106E8293B48 == sha1
462 F4BAC142BBFCF47C11941AD76018DDD4DE1D8 == mansoor
كپي رايت:http://www.dotnetexperts.net/
ASP.NET روش مناسبي براي ايجاد رشته هاي Hash شده از مقادير ورودي كاربر تدارك ديده است . اگر شما بخواهيد كه كلمه رمزتان را به صورت معمولي در Database يا فايل ذخيره كنيد ؛ در صورتيكه هكري بتواند به آن فايل يا Database دسترسي پيدا كند به راحتي مي تواند به اين كلمات رمز دسترسي داشته باشد و از آنها استفاده نمايد . بنابراين براي مخفي سازي كلمات رمز كاربران در Database مي توان يك مقدار Hash شده از آن كلمه رمز ايجاد كرد و آن را در Database ذخيره نمود . فايده اين كار اين است كه حتي در صورتيكه فردي به اين مقدار Hash شده دسترسي پيدا كند باز نمي تواند از آن استفاده نمايد و به محتواي آن پي ببرد .همچنين اشكال اين روش اين است كه در صورتيكه كاربر كلمه رمز خود را فراموش كند بازيابي آن بسيار مشكل خواهد بود .
چگونگي اعتبارسنجي با استفاده از كلمه رمز درهم سازي شده
در شرايط معمول وقتي شما كلمه رمز را در Database به شكل واقعي آن ذخيره مي كيد ، شما مي توانيد به راحتي با پيداكردن كلمه رمز مربوط به آن نام كاربري در Database و مقايسه آن با كلمه رمز ورودي كاربر اعتبار اطلاعات ورودي را مشخص كنيد . بديهي است كه اعتبارسنجي با استفاده از كلمات رمز Hash شده كمي مشكل تر از اين روش معمول مي باشد . براي اين كار شما يك مقدار Hash شده از كلمه رمز ورودي كاربر بايد ايجاد نماييد و سپس باكلمه رمزHash شده اي كه قبلاً در Database ذخيره شده است مقايسه كنيد ، اگر هر دو رشته Hash شده با هم برابر باشند در اين صورت اعتبار كاربر تاييد مي شود .
براي مثال :
string strUserInputtedHashedPassword =
FormsAuthentication.HashPasswordForStoringInConfigFile(tbPassword.Text, "sha1");
if (strUserInputtedHashedPassword == GetUsersHashedPasswordUsingUserName(tbUserName.Text))
{
// sign-in successfull
}
else
{
// sign-in failed
}
حال شما مي توانيد با استفاده از اين كد ها يك نمونه كلمات درهم سازي شده براي خود ايجاد نماييد:
protected TextBox tbPassword;
protected Literal liHashedPassword;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}
public void btnHash_Click(object sender, EventArgs e)
{
if (tbPassword.Text.Length > 0)
{
string strHashedPassword = FormsAuthentication.HashPasswordForStoringInConfigFile (tbPassword.Text, "sha1");
liHashedPassword.Text = "Hashed Password is: " + strHashedPassword;
}
}
به نمونه هاي زير توجه نماييد .
415AB40AE9B7CC4E66D6769CB2C08106E8293B48 == sha1
462 F4BAC142BBFCF47C11941AD76018DDD4DE1D8 == mansoor
كپي رايت:http://www.dotnetexperts.net/