خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
استفاده از تابع HASHBYTES برای Hash Code Encryption در SQL Server
در SQL Server برای برای رمزگذاری ساده پسوردها مثلا password encryption، از تابع HASHBYTES می توانیم برای رمزنگاری رشته ها استفاده کنیم. این یک تابع رمزنگاری Built-in در خود اس کیو ال است که دارای الگوریتم های Hashing مانند MD-2 ، MD-4 ، MD-5 ، SHA-1 ، SHA-2 (256 و 512) است. در این الگوریتم ، SHA-2 (256 و 512) در SQL Server 2008 معرفی شده اند. الگوریتم های دیگر MD و SHA1 از SQL 2005 و نسخ بعد از آن در دسترس استفاده است. در SQL Server 2016 فقط SHA-2 (256 و 512) توصیه به استفاده می شود.
تابع HASHBYTES نوع الگوریتم hashing و رشته ای را که باید هش شود را گرفته و کد hash تولید شده را برمی گرداند. در ادامه نحوه استفاده از تابع HASHBYTES و تولید hash code در الگوریتمهای مختلف را خواهید دید.
تابع HASHBYTES نوع الگوریتم hashing و رشته ای را که باید هش شود را گرفته و کد hash تولید شده را برمی گرداند. در ادامه نحوه استفاده از تابع HASHBYTES و تولید hash code در الگوریتمهای مختلف را خواهید دید.
DECLARE @input nvarchar(50);
SET @input = 'www.MyTecBits.com'
SELECT HASHBYTES('MD2', @input) as 'MD2 Output';
SELECT HASHBYTES('MD4', @input) as 'MD4 Output';
SELECT HASHBYTES('MD5', @input) as 'MD5 Output';
SELECT HASHBYTES('SHA1', @input) as 'SHA1 Output';
SELECT HASHBYTES('SHA2_256', @input) as 'SHA-256 Output';
SELECT HASHBYTES('SHA2_512', @input) as 'SHA-512 Output';
Storing And Checking Password With Encryption
برای ذخیره پسورد در hash code، مطمئن شوید ستونی که می خواهید hash code را در آن ذخیره کنید از نوع varbinary باشد. سپس از تابع HASHBYTES در دستور INSERT استفاده کرده تا hash ای که برای پسورد تولید می شود را در آن ذخیره کنید. در ذیل مثالی برای ذخیره hash code یک پسورد با استفاده از الگوریتم SHA2 512 و مقایسه آن با پسورد hash code در یک Select را مشاهده خواهید کرد.CREATE TABLE [dbo].[Users](
[UserID] [int] NOT NULL,
[UserName] [nvarchar](20) NOT NULL,
[Password] [varbinary](150) NOT NULL
) ON [PRIMARY]
GO
Insert into Users values (1, 'MyTecBitsUser', HASHBYTES('SHA2_512', 'SomePassword'))
Insert into Users values (2, 'AnotherUser', HASHBYTES('SHA2_512', 'AnotherPassword'))
GO
Select * from Users
GO
Select
UserID,
UserName,
[Password],
CASE [Password]
WHEN HASHBYTES('SHA2_512', 'SomePassword') THEN 'Authorized User'
ELSE 'Not Authorized'
END As Status
from Users
GO
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: