حسین احمدی
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

آموزش Hash کردن اطلاعات در SQL سرور با تابع HashBytes

چگونه داده های موجود در SQL سرور را Hash کنیم؟ شما به عنوان یک برنامه نویس و یا مدیر بانک اطلاعاتی وظیفه دارید تا اطلاعات مهم ذخیره شده در جداول بانک های اطلاعاتی را رمز نگاری کنید. حال این رمزنگاری می تواند Encrypt کردن اطلاعات باشد که قابل بازگشت است و یا Hash کردن باشد که غیر قابل بازگشت است. در این نکته می خواهم شما را با تابعی در SQL Server آشنا کنم که امکان Hash کردن اطلاعات را به شما می دهد. این قابلیت به خصوص زمان ذخیره کردن اطلاعات مربوط به کلمه عبور کاربران خیلی می تواند مفید باشد. مکانیز استفاده از این تابع به صورت زیر است:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
SELECT HASHBYTES('MD5','123')

با اجرای دستور بالا در پنجره Query Editor مقدار زیر نمایش داده می شود:

0x40BD001563085FC35165329EA1FF5C5ECBDBBEEF

این تابع دو پارامتر به عنوان ورودی دریافت می کند، یکی الگوریتمی که بر مبنای آن عملیات Hashing انجام می شود و دیگری رشته ای که قرار است Hash شود. الگوریتم هایی که در این تابع می توان از آن ها استفاده کرد عبارتند از:

  1. الگوریتم MD2
  2. الگوریتم MD4
  3. الگوریتم MD5
  4. الگوریتم SHA که همان SHA-0 می باشد
  5. الگوریتم SHA1
  6. الگوریتم SHA2_256
  7. الگوریتم 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'))

امیدوارم که این نکته مورد استفاده دوستان قرار بگیرد.


حسین احمدی
حسین احمدی

بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...

نظرات