ورود

View Full Version : رمزگذاری کردن Password



phpphp7
پنج شنبه 04 آذر 1395, 12:29 عصر
سلام وقت بخیر

در جدول Users ، اطلاعات کاربران از جمله پسورد و یوزرنیم وجود داره . اما پسورد به صورت معمولی ذخیره میشه .

چطور میتونم رمزنگاری روش انجام بدم ؟

Moien Tajik
پنج شنبه 04 آذر 1395, 14:05 عصر
سلام ,
اگر از identity استفاده میکنید خودش بطور پیشفرض رمزنگاری رو همراه با Salt انجام میده !
اگر باز هم مشکلی داشت این مقاله کمکتون میکنه که رمزتون رو Encrypt کنید : http://www.c-sharpcorner.com/uploadfile/145c93/save-password-using-salted-hashing/

phpphp7
پنج شنبه 04 آذر 1395, 15:05 عصر
سلام ,
اگر از identity استفاده میکنید خودش بطور پیشفرض رمزنگاری رو همراه با Salt انجام میده !
اگر باز هم مشکلی داشت این مقاله کمکتون میکنه که رمزتون رو Encrypt کنید : http://www.c-sharpcorner.com/uploadfile/145c93/save-password-using-salted-hashing/

سلام ممنون
چطوری میتونم از identity استفاده کنم ؟

توسط آموزش فوق ، مثلا وقتی کاربری رمز عبورش رو فراموش کنه ، اون رمز (مثلا 1234) هست ، هش اون به ایمیلش ارسال میشه یا خود 1234 ؟

Moien Tajik
پنج شنبه 04 آذر 1395, 18:25 عصر
چطوری میتونم از identity استفاده کنم ؟

در پروژه های MVC وقتی Authentication رو بر روی Individual Authentication بزارید ، خودش براتون Identity رو قرار میده ، اگر نبود از داخل NuGet میتونید Microsoft.AspNet.Identity.EntityFramework رو نصب کنید.




توسط آموزش فوق ، مثلا وقتی کاربری رمز عبورش رو فراموش کنه ، اون رمز (مثلا 1234) هست ، هش اون به ایمیلش ارسال میشه یا خود 1234 ؟
آموزش بالا Forgot Password نداره اما پیشفرض به این شکل هست که به ایمیل شما یک لینک ارسال میکنه که اگر روی اون لینک بزنید به صفحه تغییر رمز هدایت میشید و خودش رمز جدید بهتون نمیده .

phpphp7
چهارشنبه 10 آذر 1395, 13:33 عصر
سلامی مجدد

من توسط الگوریتم salt ، رمزی که کاربر هنگام ثبت نام وارد میکنه رو هش کردم

حالا باید چطوری موقعی که اون کاربر میخواد وارد بشه ، salt رو تبدیل کنم به پسورد تا کاربر بتونه وارد بشه ؟

کلید salt و رمزی که موقع لاگین وارد شده ،موجود هست

الگوریتم رمز گشایی هست و کدهای زیر رو دارم :


public string EncodePasswordMd5(string pass) //Encrypt using MD5
{
Byte[] originalBytes;
Byte[] encodedBytes;
MD5 md5;
//Instantiate MD5CryptoServiceProvider, get bytes for original password and compute hash (encoded password)
md5 = new MD5CryptoServiceProvider();
originalBytes = ASCIIEncoding.Default.GetBytes(pass);
encodedBytes = md5.ComputeHash(originalBytes);
//Convert encoded bytes back to a 'readable' string
return BitConverter.ToString(encodedBytes);
}

public string EncodePassword(string pass, string salt) //encrypt password
{
byte[] bytes = Encoding.Unicode.GetBytes(pass);
byte[] src = Encoding.Unicode.GetBytes(salt);
byte[] dst = new byte[src.Length + bytes.Length];
System.Buffer.BlockCopy(src, 0, dst, 0, src.Length);
System.Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length);
HashAlgorithm algorithm = HashAlgorithm.Create("SHA1");
byte[] inArray = algorithm.ComputeHash(dst);
//return Convert.ToBase64String(inArray);
return EncodePasswordMd5(Convert.ToBase64String(inArray)) ;
}



اما تو قسمت linq ، چطوری باید رمز دیتابیس ، با رمز دیکود شده را مطابقت بدم ؟

Moien Tajik
چهارشنبه 10 آذر 1395, 13:51 عصر
شما پسورد رو داخل دیتابیس MD5 ذخیره کنید . موقع لاگین هم پسورد رو MD5 کنید با اونی که داخل دیتابیس هست چک کنیدش .

phpphp7
چهارشنبه 10 آذر 1395, 14:14 عصر
شما پسورد رو داخل دیتابیس MD5 ذخیره کنید . موقع لاگین هم پسورد رو MD5 کنید با اونی که داخل دیتابیس هست چک کنیدش .

سلام

دقیقا همین کار شما رو انجام دادم

اما رمز موقع ثبت نام که تبدیل به salt میشه ، با رمزی که موقع ورود وارد میشه و تبدیل به salt میشه ، باهم فرق میکنن ! خیلی عجیبه !

مثلا رمز هنگام ثبت نام 123456 هست salt اون میشه ASSSSSDDDDDDDD== اما موقع ورود وقتی کاربر 123456 رو وارد میکنه و الگوریتم salt میخواد این رمز رو کد کنه ، میشه BSDsfadsfdad ==

کلید salt هم یکی هست

با MD5 این کار رو نکردم

الگوریتم رمز نگاری ام salt هست

Moien Tajik
شنبه 13 آذر 1395, 16:40 عصر
سلام

دقیقا همین کار شما رو انجام دادم

اما رمز موقع ثبت نام که تبدیل به salt میشه ، با رمزی که موقع ورود وارد میشه و تبدیل به salt میشه ، باهم فرق میکنن ! خیلی عجیبه !

مثلا رمز هنگام ثبت نام 123456 هست salt اون میشه ASSSSSDDDDDDDD== اما موقع ورود وقتی کاربر 123456 رو وارد میکنه و الگوریتم salt میخواد این رمز رو کد کنه ، میشه BSDsfadsfdad ==

کلید salt هم یکی هست

با MD5 این کار رو نکردم

الگوریتم رمز نگاری ام salt هست


به این شکل چک کنید پسورد رو :

UserManager.PasswordHasher.VerifyHashedPassword(us er.TempPassword,model.Password);
// Check Is Temp Password Equal To User Entered Password
if (hashedPassword == PasswordVerificationResult.Success)
{
// Remove First Password & Replace With Temp Password
user.PasswordHash = user.TempPassword;
await UserManager.UpdateAsync(user);
}