PDA

View Full Version : کد گذاری رو Password



parisa_joooon
سه شنبه 03 مرداد 1391, 22:41 عصر
بچه ها اگه من رمز عبور کاربرها رو موقع ثبت نام کد گذاری کنم و بعد بریزم تو DB
موقع ورود کاربر به سایت چه جوری باید بررسی کنم مقدار رمز عبور کاربر و با اون عبارت کد شد؟
بهترین روش برای کد گذاری که ساده هم باشه چیه؟

TeacherMath
چهارشنبه 04 مرداد 1391, 00:39 صبح
باز آنچه کاربر می ده کد می کنی و با آنچه در دتیتابیس وجود داره مقایسه می کنید.
میتونی برای رمز گذاری از
System.Security.Cryptography

fakhravari
چهارشنبه 04 مرداد 1391, 01:08 صبح
/// <summary>
/// هش کلمات با MD5
/// </summary>
/// <param name="Text">رشته</param>
public static string Hash_Md5(string Text)
{
try
{ return FormsAuthentication.HashPasswordForStoringInConfig File(Text, "MD5"); }
catch { return "Error MD5"; }
}
/// <summary>
/// هش کلمات با SHA1
/// </summary>
/// <param name="Text">رشته</param>
public static string Hash_SHA1(string Text)
{
try
{ return FormsAuthentication.HashPasswordForStoringInConfig File(Text, "SHA1"); }
catch { return "Error SHA1"; }
}

imanasp
چهارشنبه 04 مرداد 1391, 01:35 صبح
بچه ها اگه من رمز عبور کاربرها رو موقع ثبت نام کد گذاری کنم و بعد بریزم تو DB
موقع ورود کاربر به سایت چه جوری باید بررسی کنم مقدار رمز عبور کاربر و با اون عبارت کد شد؟
بهترین روش برای کد گذاری که ساده هم باشه چیه؟

از SHA256Managed استفاده کنید امنیت بیشتری داره
این برای وقتی که می خواید به هش در بیاریدش:

string Pass = txtPass.Text.ToLower().Trim();
byte[] strPass = System.Text.UTF8Encoding.UTF8.GetBytes(Pass);
System.Security.Cryptography.SHA256Managed sha = new System.Security.Cryptography.SHA256Managed();
byte[] hashValue = sha.ComputeHash(strPass);
و اینم واسه زمانی که می خواید با دیتابیس مقایسش بکنید:
string Pass = txtPass.Text.ToLower().Trim();
byte[] strPass = System.Text.UTF8Encoding.UTF8.GetBytes(Pass);

System.Security.Cryptography.SHA256Managed sha = new System.Security.Cryptography.SHA256Managed();
byte[] hashValue = sha.ComputeHash(strPass);


// string strPass = FormsAuthentication.HashPasswordForStoringInConfig File(txtPass.Text.ToLower().Trim(), "MD5");
string strUserName = txtUserName.Text.ToLower().Trim();
SqlConnection cnn = new SqlConnection(_connectionString);
SqlCommand com = new SqlCommand("select [userName],[pass] from Users where userName=@userName and pass=@pass");
com.Parameters.AddWithValue("@userName", strUserName);
com.Parameters.AddWithValue("@pass", hashValue);
com.Connection = cnn;
cnn.Open();
SqlDataReader dr = com.ExecuteReader();
if (dr.HasRows)
{
FormsAuthentication.RedirectFromLoginPage(strUserN ame,false);
lblUserName.Text = strUserName;

}

else
{
lblError.Text = "!چنین کاربری وجود ندارد";
}
dr.Close();
cnn.Close();
}

ramin149
چهارشنبه 04 مرداد 1391, 09:22 صبح
public string HashPassword(string password)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(password);
SHA512Managed hashString = new SHA512Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}

golnouri
چهارشنبه 04 مرداد 1391, 10:38 صبح
از SHA256Managed استفاده کنید امنیت بیشتری داره
این برای وقتی که می خواید به هش در بیاریدش:

string Pass = txtPass.Text.ToLower().Trim();
byte[] strPass = System.Text.UTF8Encoding.UTF8.GetBytes(Pass);
System.Security.Cryptography.SHA256Managed sha = new System.Security.Cryptography.SHA256Managed();
byte[] hashValue = sha.ComputeHash(strPass);
و اینم واسه زمانی که می خواید با دیتابیس مقایسش بکنید:
string Pass = txtPass.Text.ToLower().Trim();
byte[] strPass = System.Text.UTF8Encoding.UTF8.GetBytes(Pass);

System.Security.Cryptography.SHA256Managed sha = new System.Security.Cryptography.SHA256Managed();
byte[] hashValue = sha.ComputeHash(strPass);


// string strPass = FormsAuthentication.HashPasswordForStoringInConfig File(txtPass.Text.ToLower().Trim(), "MD5");
string strUserName = txtUserName.Text.ToLower().Trim();
SqlConnection cnn = new SqlConnection(_connectionString);
SqlCommand com = new SqlCommand("select [userName],[pass] from Users where userName=@userName and pass=@pass");
com.Parameters.AddWithValue("@userName", strUserName);
com.Parameters.AddWithValue("@pass", hashValue);
com.Connection = cnn;
cnn.Open();
SqlDataReader dr = com.ExecuteReader();
if (dr.HasRows)
{
FormsAuthentication.RedirectFromLoginPage(strUserN ame,false);
lblUserName.Text = strUserName;

}

else
{
lblError.Text = "!چنین کاربری وجود ندارد";
}
dr.Close();
cnn.Close();
}
بسیار ممنون

aynehband
جمعه 06 مرداد 1391, 13:01 عصر
استفاده از salt هم لازمه. یعنی یک رشته اتفاقی ایجاد کنی و در DB ذخیره کنی، و سپس salt و رمز را با هم هش کنی. الان سایت های مهم از جمله اعتبار سنجی خود ASP.NET2 هم از این روش استفاده میکنه. امنیتش بسیار بالاست.

parisa_joooon
چهارشنبه 22 شهریور 1391, 15:41 عصر
بچه ها من از این کد اینطوری استفاده کردم اما کار نمیکنه:
string Pass = txtPass.Text.ToLower().Trim(); byte[] strPass = System.Text.UTF8Encoding.UTF8.GetBytes(Pass); System.Security.Cryptography.SHA256Managed sha = new System.Security.Cryptography.SHA256Managed(); byte[] hashValue = sha.ComputeHash(strPass);


cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Insert Into [LoginPanel] ([UserName], [Password]) Values (N'" + txtUserName.Text + "' , N'" + txtPassword.Text + "')";
if (con.State != ConnectionState.Open)
{
con.Open();
}
if (cmd.ExecuteNonQuery() == 0)
{
txtPassword.Enabled = false;
}
con.Close();


اما جواب نمیده و رمز نمیکنه

ramin149
چهارشنبه 22 شهریور 1391, 15:59 عصر
خوب از تابعی که من گذاشتم استفاده کن . من در پروژه هام دارم استفاده می کنم و جواب می گیرم

parisa_joooon
چهارشنبه 22 شهریور 1391, 17:01 عصر
میشه یه مثال بزنید