PDA

View Full Version : متذی برای hash کردن یک کد



ordebehesht
یک شنبه 24 دی 1391, 00:37 صبح
دوستان سلام من یه متد پیدا کردم برای hash کردن جواب میده دوستان هم میتونن ازش استفاده کنن اما نمیفهمم که چی میگه لطف کنین راهنمایی کنین فقط نگین اینجا اینه اونجا اینه خواهشن بگین ایکلاس برا چیه کارش چیه اینجا چه میکنه در مورد نحوه کد نویسی بگین ممنون خداخیرتون بده


private string EncryptMD5(string strToEncrypt)
{
UTF8Encoding ue = new UTF8Encoding();
byte[] bytes = ue.GetBytes(strToEncrypt);

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] hashBytes = md5.ComputeHash(bytes);

// Bytes to string
return System.Text.RegularExpressions.Regex.Replace(BitCo nverter.ToString(hashBytes), "-", "").ToLower();
}


در مورد این خط ممنون میشم توضبح بیشتر بدین مخصوصا regulaexperstion وregex


return System.Text.RegularExpressions.Regex.Replace(BitCo nverter.ToString(hashBytes), "-", "").ToLower();

plus
یک شنبه 24 دی 1391, 00:44 صبح
خوب این متد، یک رشته میگیره، ابتدا اون رو (با فرض اینکه UTF-8 هست)، به آرایه ای از بایت تبدیل میکنه تا بتونه آرایه رو با استفاده از روش MD5، هش کنه.حاصل Hash، که باز هم آرایه ای از بایت هست، توی یک متغیر ذخیره میشه (hashBytes).
حالا برای اینکه خروجی رو به صورت رشته (نه آرایه ای از بایت) برگردونه، با استفاده از کلاس BitConverter اون آرایه رو به یک رشته تبدیل میکنه. BitConverter بعد از تبدیل، بین کاراکتر هایی که معادل یک بایت هستن یک خط فاصله میذاره.این کد، با استفاده از تابع متد Replace، اون خط فاصله رو هم حذف میکنه و رشته حاصل رو برمیگردونه.البته قبل از برگردوندن هم با استفاده از مند ToLower، حروف بزرگ رو به کوچیک تبدیل میکنه.

ordebehesht
یک شنبه 24 دی 1391, 00:49 صبح
ممنون اما ای کاش در مورد این ها regulaexperstion وregex یه توضیح مختصری میدادید

یعنی regex اینجا کارش چیه

plus
یک شنبه 24 دی 1391, 01:03 صبح
فقط از متد Replace مربوط به RegEx استفاده شده.البته با استفاده ای که شده به نظر میاد لزومی نداشته از RegEx استفاده کنه.چون فقط یک Replace ساده انجام شده. میشه بجای خط آخر از

return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();

استفاده کرد یعنی از متد Replace خود کلاس String برای جایگذاری خط فاصله با رشته خالی.

ordebehesht
یک شنبه 24 دی 1391, 02:23 صبح
یه سوال برای تبدیل رشته به آرایه ای از بایت لازم به نمونه سازی از کلاس UTF8Encoding هستش

ordebehesht
یک شنبه 24 دی 1391, 14:41 عصر
کسی نیست جواب بده

plus
یک شنبه 24 دی 1391, 19:41 عصر
بستگی به نوع رشته شما داره.اگه رشته حاوی متن ASCII باشه، باید از کلاس System.Text.Encoding.ASCII استفاده بشه، اگه Unicode باشه، System.Text.Encoding.Unicode و الی آخر و یا System.Text.Encoding.Default.البته رشته ها در #C به طور پیشفرض Unicode هستن.