Sql Server’da Hash işlemi
Uygulamalarımızda verileri hash‘lemeye her zaman ihtiyaç duyarız. Verileri hash’lemek için kullanabileceğimiz birçok araç vardır.
Eğer veriyi veritabanı katmanında (Sql Server) hash’lemek istiyorsak, MSDN‘de şu sayfada bulunan makalede okuyabileceğiniz gibi HASHBYTES fonksiyonu ile yapabiliriz.
HASHBYTES fonksiyonu iki parametre alır;
Algoritma: Hash’leme algoritması. Alabileceği değerler; MD2, MD4, MD5, SHA, SHA1
Veri: Hash işlemine tabi tutulacak veri
HASHBYTES fonksiyonu geriye VarBinary(8000) tipinde değer döndürür.
MD5 algoritması ile hash işlemi yapan örnek kod;
SELECT
KULLANICI_KODU,
KULLANICI_ADI,
HASHBYTES('MD5', KULLANICI_SIFRE) AS KULLANICI_SIFRE
FROM
T_KULLANICI WITH (NOLOCK)
CREATE PROCEDURE PR_KULLANICI_EKLE
(
@KULLANICI_KODU VARCHAR(5),
@KULLANICI_ADI VARCHAR(50),
@KULLANICI_SIFRE VARCHAR(15)
)
AS
INSERT INTO T_KULLANICI
(KULLANICI_KODU, KULLANICI_ADI, KULLANICI_SIFRE, KAYIT_TARIHI)
VALUES
(@KULLANICI_KODU, @KULLANICI_ADI, HASHBYTES('MD5', @KULLANICI_SIFRE), GETDATE())
SELECT SCOPE_IDENTITY()
CREATE PROCEDURE PR_KULLANICI_LOGIN
(
@KULLANICI_ADI VARCHAR(50),
@KULLANICI_SIFRE VARCHAR(15)
)
AS
SELECT
KULLANICI_KODU,
KULLANICI_ADI,
HASHBYTES('MD5', KULLANICI_SIFRE) AS KULLANICI_SIFRE
FROM
T_KULLANICI WITH (NOLOCK)
WHERE
KULLANICI_ADI = @KULLANICI_ADI AND
KULLANICI_SIFRE = HASHBYTES('MD5', @KULLANICI_SIFRE)
Güvenlik ihtiyaçlarından ötürü kıymetli bilgilerin network’ten ulaşılmasını önlemek için, veriyi taşımadan önce hash‘lemek isteyebilirsiniz. HASHBYTES fonksiyonu bu işin son derece kullanışlı gözüküyor.
Not : Yazıyı yazdıktan sonra gördüm ki, Emre Ayrılmaz şuradaki makalesinde aynı konuyu işlemiş, okunmasında fayda var.
İlgili diğer başlıklar:
- C# ile Hash işlemi
- Sql Server 2008 Except ve Intersect Anahtar Kelimeleri
- Sql Server veritabanında en büyük 10 tablo
- @@IDENTITY, SCOPE_IDENTITY() ve IDENT_CURRENT() arasındaki farklar
- Kısa Sınav – 9
- Bu kodda ne yanlış var? – 1
- Sql Server 2008′de Çoklu Insert İşlemi
- Sql Server’da Random Sayı Üretmek
- Sql Server CSV (Comma Seperated Value) çıktı üretme
- Sql Server Query Plan Cache