برای تاریخ و شماره موبایل چطور؟
بستگی به کاربرد و میزان پردازشی داره که روی اون تاریخ و شماره موبایل انجام میشه. فرضا اگه تاریخ دقیق یک عملیاتی (مثل زمان صدور فاکتور) ثبت میشه،
بهتره که از نوع داده DateTime استفاده بشه که تاریخ و ساعت رو بصورت استاندارد یکجا ذخیره می کنه و امکانات مقایسه تاریخ های مختلف و مرتب سازی اش ساده است.
طبعا اگه قراره شماره موبایل ها بتوانند با رقم 0 یا کاراکتر + شروع شوند باید از نوع داده رشته ای string استفاده کنید.
روش های hash کردن در سی شارپ چجوریه؟
برای استفاده از روتین های مربوطه System.Security.Cryptography رو در ابتدای کد تان using کنید :
کد:
using System.Security.Cryptography;
اول رمز عبور مورد نظر رو در متغیری مثل password دارید :
کد:
string password = "123456";
قبل از Hash کردن اون رمز عبور رو به آرایه ای از بایت ها تبدیل خواهید کرد چون Hash ها ذاتا هم ورودی و هم خروجی شان داده باینری است، نه رشته string
کد:
byte[] bytes = Encoding.Unicode.GetBytes(password);
سپس با یکی از شیوه های Hash ای که Net. ارائه می کنه فرضا SHA1 اون آرایه رو Hash می کنید.
و برای آنکه خروجی اش که آرایه از بایت ها است رو بتوان بصورت string ذخیره کرد، به Base64 تبدیل اش می کنیم :
کد:
string code = Convert.ToBase64String(HashAlgorithm.Create("SHA1").ComputeHash(bytes));
بجای "SHA1" می توانید از سایر Hash های مرسوم مثل "MD5" یا "SHA256" یا "SHA512" استفاده کنید.
SHA1 یک Hash ئه 160 بیتی است، MD5 یک Hash ئه 128 بیتی است، SHA256 یک Hash ئه 256 بیتی و SHA512 یک Hash ئه 512 بیتی است.
هر چه تعداد بیت های Hash بیشتر باشند مقدار code خروجی هم طولانی تر خواهد بود، برای رمز عبور یک Hash ئه 128 بیتی هم کفایت می کند.
همین روال را موقع چک کردن رمز عبور در هنگام ورود کاربر انجام خواهید داد و code ثبت شده در بانک اطلاعاتی را با code رمزی که کاربر تایپ کرده مقایسه خواهید کرد.
Base64 می تواند هر آرایه ای از بایت ها را بصورت یک رشته متنی که قابل نمایش هم هست ثبت کند. یکی از کاربرد های مهم Base64
در ذخیره کردن فایل های پیوستی در ایمیل است چون ایمیل اساس بصورت متن ارسال می شود و مستقیما امکان درج کردن داده باینری در متن وجود ندارد.