چگونه داده های موجود در SQL سرور را Hash کنیم؟ شما به عنوان یک برنامه نویس و یا مدیر بانک اطلاعاتی وظیفه دارید تا اطلاعات مهم ذخیره شده در جداول بانک های اطلاعاتی را رمز نگاری کنید. حال این رمزنگاری می تواند Encrypt کردن اطلاعات باشد که قابل بازگشت است و یا Hash کردن باشد که غیر قابل بازگشت است. در این نکته می خواهم شما را با تابعی در SQL Server آشنا کنم که امکان Hash کردن اطلاعات را به شما می دهد. این قابلیت به خصوص زمان ذخیره کردن اطلاعات مربوط به کلمه عبور کاربران خیلی می تواند مفید باشد. مکانیز استفاده از این تابع به صورت زیر است:
دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
SELECT HASHBYTES('MD5','123')
با اجرای دستور بالا در پنجره Query Editor مقدار زیر نمایش داده می شود:
0x40BD001563085FC35165329EA1FF5C5ECBDBBEEF
این تابع دو پارامتر به عنوان ورودی دریافت می کند، یکی الگوریتمی که بر مبنای آن عملیات Hashing انجام می شود و دیگری رشته ای که قرار است Hash شود. الگوریتم هایی که در این تابع می توان از آن ها استفاده کرد عبارتند از:
- الگوریتم MD2
- الگوریتم MD4
- الگوریتم MD5
- الگوریتم SHA که همان SHA-0 می باشد
- الگوریتم SHA1
- الگوریتم SHA2_256
- الگوریتم SHA2_512
دو الگوریتم آخر از نسخه 2012 به SQL Server اضافه شده اند. دستور زیر عبارت test را بر مبنای الگوریتم SHA2-256 هش می کند:
select HASHBYTES('SHA2_256','123')
اما مثالی از کاربرد این تابع در زمان استفاده بزنیم. فرض کنید جدولی دارید با نام Users که اطلاعات کاربران در آن ذخیره می شود. با استفاده از ترکیب تابع HASHBYTES و دستور INSERT می توانید کلمه عبور را به صورت رمز شده ذخیره کنید:
INSERT INTO [Users] ([Username], [Password]) VALUES ('Ahmadi',HASHBYTES('SHA2_256','123'))
امیدوارم که این نکته مورد استفاده دوستان قرار بگیرد.