Microsoft SQL Veritabanı sunucusu (MSSQLSERVER) veri kriptolama ve veri dosyası kriptolama
Bölüm 2
HASHBYTES ile veri kriptolama
sql2005 ile birlikte gelen bir fonksiyon.
Bu yöntemde kriptolanan verinin orjinal haline artık ulaşamayız, ancak sadece
verdiğimiz değeride aynı yöntemle kriptolayarak karşılaştırma yapabiliriz.
HASHBYTES(<KRIPTO METODU>,<VERI>)
bu fonksiyonda <KRIPTO METODU> alanına md5,sha,sha1 gibi değerler gelebilir.
bunlar bilinen kriptolama metodlarıdır. md5 çok güvenli olmayan bir yöntemdir.
çünkü kaydedilmiş hash''li veri bilinince internetten kolayca bulunabilecek hash tabloları
yardımı ile gerçek veri oluşturulabilir. o yüzden burada daha güçlü olan sha1 gibi
bir metodu kullanılması tavsiye edilir.
hashlenendeger= hashbytes(sha1,'gizli veri')
bizimhasdegeri=hashbytes(sha1,'denenen değer')
evet yukarıdaki gibi gerçek veri hashli duruyor sistemde, bu değer ile
bizim girdiğimiz değerin aynı metod ile hash''lenmesi sonucu oluşan hash''
değeri aynı ise 2 değer birbirine eşittir. yukarıdaki hash değerleri farklı çıkacaktır tabi.
gelelim demomuza...
--bir kullanıcıları login ile sistemimize aldığımız bir web sitesi düşünelim
-- burada en önemli verimiz tabiki kullanıcının şifresidir. çünkü şifre bilindiğinde
-- diğer bilgilere arayüzden erişmek kolaydır.
-- o yüzden şifre bilgilerini güvenli kriptolu tutmamız gerekir.
-- bir tablo oluşturalım ve şifre tutacağımız alanı varbinary formatında oluşturalım.
CREATE TABLE [dbo].[tblUser](
[id] [int] IDENTITY(1,1) NOT NULL,
[username] [varchar](20) NOT NULL,
[isim] [varchar](50) NOT NULL,
[sifre] [varbinary](256) NOT NULL, -- şifreyi hash'li tutacağından byte tipinde
CONSTRAINT [PK_tblUser] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
--- kullanıcıları kayıt etme sırasında hash'leyerek kaydediyoruz.
-- çok basit bir fonksiyon ile bilgiyi hash'leyebiliyoruz....
declare @username varchar(20)
declare @sifre varchar(20)
declare @isim varchar(50)
--kullanıcı kaydet
set @isim='Fatih ÜNAL'
set @username='fatih'
set @sifre='şifre12345'
insert into tblUser
values(@username ,@isim ,hashbytes('sha1',@sifre))
select * from tblUser
--şifre doğrumu kontrolü
set @username='fatih'
set @sifre='şifrem12345' -- uygulamadan gelen şifre
if exists(select * from tblUser
where username=@username and sifre=HASHBYTES('sha1',@sifre))
begin
select 'doğru'
end
else
begin
select 'yanlış'
end
Devam edecek....
Hiç yorum yok:
Yorum Gönder