HashBytes ile Veri Katmanında Hash İşlemi
14 Ekim Çarşamba, 2009 | Sql /*Yorumlar (3)*/
Bildiğiniz gibi verileri Hash'lemek için bir çok yöntem var. Bunlara alternatif olarak Ms Sql Server içindeki HashBytes sistem fonksiyonu ile de yapmak mümkün.
Fonksiyon iki adet parametre alır. İlk parametre Hash algoritmasının adı (MD2, MD4, MD5, SHA, SHA1) diğeri ise Hash'lenecek veri(varchar, nvarchar, varbinary). Fonksiyondan geriye ise varbinary tipinde bir değer döner (8000 bytes).
Örnek olarak, web uygulaması için basit bir login işlemi yapalım.
Örnek tablo:
create table SiteUsers ( userID int primary key identity(1,1), userName nvarchar(50), [passWord] varbinary(20)--SHA1 160bits > 20 bytes ) go
Kayıt eklemek için bir procedure.
create proc InsertUser
@userName nvarchar(50),
@passWord nvarchar(50)
as
insert SiteUsers
values
(@userName,HashBytes('SHA1', @passWord));
select SCOPE_IDENTITY();
go
Son olarakta kullanıcı kontrolü yapan bir procedure.
create proc ValidateUser
@userName nvarchar(50),
@passWord nvarchar(50)
as
if exists(select userID from SiteUsers
where userName = @userName
and
[passWord] = HashBytes('SHA1', @passWord))
select 'Mevcut.'
else
select 'Mevcut değil.'
go