دسته بندی ها
15:20 1398/07/21

نحوه هش کردن پسورد در Asp.net core در روش dbfirst

مشخصات سوال کننده :
کاربر : jafari90     امتیاز کاربر : 0     رتبه کاربر : 7066
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3706
هوش مصنوعی

پاسخ هوش مصنوعی

برای هش کردن پسورد در ASP.NET Core بدون استفاده از Identity و با استفاده از روش Database First، می توانید از کلاس SHA256 یا bcrypt استفاده کنید. در اینجا یک مثال ساده برای هش کردن پسورد با استفاده از bcrypt آورده شده است:

using BCrypt.Net;

// تابعی برای هش کردن پسورد
public string HashPassword(string password)
{
    return BCrypt.Net.BCrypt.HashPassword(password);
}

// تابعی برای بررسی پسورد
public bool VerifyPassword(string password, string hashedPassword)
{
    return BCrypt.Net.BCrypt.Verify(password, hashedPassword);
}

در هنگام ذخیره پسورد در دیتابیس، می توانید از تابع HashPassword استفاده کنید:

string plainPassword = "پسورد شما";
string hashedPassword = HashPassword(plainPassword);

// ذخیره  در دیتابیس

برای بررسی پسورد ورودی کاربر، از تابع VerifyPassword استفاده کنید:

string enteredPassword = "پسورد ورودی";
if (VerifyPassword(enteredPassword, hashedPassword))
{
    // پسورد صحیح است
}
else
{
    // پسورد نادرست است
}

توجه داشته باشید که برای استفاده از BCrypt.Net باید پکیج مربوطه را از NuGet به پروژه خود اضافه کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 23:24 1398/07/26

با سلام

براي رمزنگاري پسورد در روش DbFirst شما مي تونيد از الگوريتمهاي مختلف رمزنگاري مثل Md5 و يا Sha256 يا ... استفاده کنيد. براي اين منظور ابتدا تايين کنيد از چه روشي مي خواهيد استفاده کنيد. اگر از روش MD5 استفاده مي کنيد فيلد پسورد رو از نوع nvarchar(32) و اگر از نوع Sha256 استفاده مي کنيد فيلد پسورد رو از نوع nvarchar (128)  قرار بديد. دليل اين موضوع اين هست که الگوريتم رمزنگاري MD5 يک رشته هش شده 32 کاراکتري توليد مي کند و الگوريتم Sha256 يک رشته هش شده 128 کاراکتري رو توليد مي کنه. 

 

سپس در کدهاي خودتون مي تونيد به روش زير رمز عبور رو تبديل به يک رشته هش شده کنيد. کد زير مربوط به sha256 مي باشد.

 

  SHA256CryptoServiceProvider SHA256 = new SHA256CryptoServiceProvider();
                    Byte[] B1;
                    Byte[] B2;
                    B1 = UTF8Encoding.UTF8.GetBytes(model.Password);
                    B2 = SHA256.ComputeHash(B1);
                    string HashedPassword = BitConverter.ToString(B2);

 

دقت کنيد که براي استفاده از الگوريتم هاي رمز نگاري بايد از کتابخانه 

using System.Security.Cryptography;

استفاده کنيد.

 

در دستور بالا يک رشته هش شده 128 کاراکتري غير قابل بازگشت توليد مي شود.

نکته : براي اينکه بتونيد موقع لاگين رمز عبور را کنترل کنيد بايد رمز عبور را مجدد هش کنيد و با رشته هش شده درون ديتابيس مقايسه کنيد

 

موفق باشيد

به این پاسخ امتیاز بدهید    3
امتیاز: 1664 رتبه: 1
پاسخ دهنده : AliNoori 23:24 1398/07/26

شما میتونید از ProtectProvider نیز استفاده کنید . کد هاشو میزارم و کافی فقط کپی Paste کنی

public class ProtectProvider: IProtectProvider
    {
        private readonly IDataProtector protector;
        public ProtectProvider(IDataProtector _protector)
        {
            protector = _protector.CreateProtector(typeof(ProtectProvider).FullName);
        }
        public string Encrypt(string StrInput)
        {
            byte[] Bytes = protector.Protect(Encoding.UTF8.GetBytes(StrInput));
            return Convert.ToBase64String(Bytes);
        }
        public string Decrypt(string StrInput)
        {
            byte[] Bytes = protector.Unprotect(Convert.FromBase64String(StrInput));
            return Encoding.UTF8.GetString(Bytes);
        }
    }

 

به این پاسخ امتیاز بدهید    2
امتیاز: 136 رتبه: 11
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود