تخفیف های ویژه عیدانه توسینسو
تا 60 درصد تخفیف ویژه
00ساعت 00دقیقه 00ثانیه

آشنایی با تابع HASHBYTES در SQL Server برای 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'))

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

نویسنده: حسین احمدی

انجمن تخصصی فناوری اطلاعات ایران

6 نظر
ابوالفضل رهنما

سلام

استاد یک سوال استفاده از کدام الگوریتم را شما پیشنهاد می دهید و ایا اصلا فرق بین انها وجود دارد یانه(از لحاظ سرعت وامنیت)

باتشکر

ابوالفضل رهنما

سلام

استاد آیا این تابع در MySql هم وجود دارد؟!

حسین احمدی

سلام، البته بنده زیاد با MySQL آشنایی ندارم، اما تا جایی که می دونم توابعی به صورت جداگانه برای Hash کردن اطلاعات وجود داره، مثل MD5 یا SHA و SHA1.

حسین احمدی

سلام و عرض ادب، نکته زیر رو مطالعه کنید، NOLOCK و READPAST رو داخلش توضیح دادم:

آشنایی با کاربرد NOLOCK و READPAST در SQL Server

سعید احمدوند

با سلام خدمت مهندس احمدی عزیز.

میخواستم بدونم تفاوت کوئری های که در اونها از nolock و readpast استفاده میشه با کوئری های ساده چی هست و کجا کاربرد داره و همچنین چه موقع باید از اونها استفاده کنیم.

ممنون

حسن ضرابی

با سلام و خسته نباشید

ممنونم بابت این آموزش

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....