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

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

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

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3654
پاسخ دهنده : 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
امتیاز: 1654 رتبه: 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
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود