MS-SQL Şifreleme İşlemleri

  • 23
  • (1)
  • (5)
  • 27 Haz 2017

Veri şifrelemek için encryptbypassphrase fonksiyonunu kullanabilirsiniz. Bu fonksiyonun ilk parametresi şifreleme anahtarı, ikinci parametresi ise şifrelenecek metin olacaktır.


select encryptbypassphrase('awr127q23s', N'Şifrelenecek Metin')

Sorguda çalıştırılacak fonksiyonun sonucu olarak hexadecimal(16 tabanlı) bir binary sonuç göreceksiniz. Metnin şifrelenmiş ve byte bilgisine dönüştürülmüş halini tablolar üzerinde varbinary türünde alanlar içinde tutabilirsiniz.

Aşağıdaki gibi bir tablo oluşturarak bu tabloya şifrelenmiş veriler girebilirsiniz.


create table tabloKullanicilar
(KullaniciAdi nvarchar(50), Parola varbinary(max))

tabloKullanicilar üzerindeki Parola isimli alana şifrelenmiş parola bilgileri kaydedilecektir. Aşağıdaki insert sorgularını uygulayarak anahtar-21 değeri ile şifrelenen her bir parola byte dizisi olarak kaydedilir.


insert tabloKullanicilar (KullaniciAdi, Parola)
values (N'admin', encryptbypassphrase('anahtar-21', N'sifre!123test'))
insert tabloKullanicilar (KullaniciAdi, Parola)
values (N'moderator', encryptbypassphrase('anahtar-21', N'yenisifre12!'))

Kayıtları doğrudan görmek istediğiniz zaman:


select * from tabloKullanicilar

Sütuna sığmayan 16 tabanlı bir byte dizisi göreceksiniz.

Şifrelenmiş bilgiyi geri çözmek içinse şifrelendiği anahtar ile decryptbypassphrase fonksiyonu kullanılır. Bu fonksiyonun da encryptbypassphrase gibi ilk parametresi anahtar, ikinci parametresi ise şifreli byte dizisi (varbinary) olacaktır. Ancak çözülen şifre de varbinary cinsinden olacağı için şifrelenmiş veri hangi türde ise convert fonksiyonu ile ona dönüştürülmelidir.


select KullaniciAdi, convert(nvarchar, decryptbypassphrase('anahtar-21', Parola))
from tabloKullanicilar

Dikkat etmeniz gereken husus eğer başlangıçta metni nvarchar olarak yani N'metin' şeklinde belirlediyseniz geri dönüştürürken de nvarchar türüne dönüştürmeniz gerektiğidir. Eğer varchar olarak şifrelediyseniz varchar türüne döndürün.