Seringkali kita memerlukan enkripsi data dalam salah satu Field di database kita, fungsi ini kita perlukan karena bisa jadi kita tidak menginginkan seseorang membaca data dari tabel kita. Salah satu contoh nya adalah password. Penyimpanan password dalam suatu table database memerlukan suatu pengamanan yang tidak sembarangan, sangat disarankan password disimpan dalam keadaan terenkripsi sehingga apabila ada seseorang yang tidak berkepentingan mendapatkan isi dari database user kita dan didalamnya tersimpan password dari user di system kita, orang tersebut masih relatif sulit menebak password user tersebut.
Ada banyak sekali metode encrypt data, tapi inti dari metode -metode tersebut dikatakan bagus jika,
- Hasilnya sulit di tebak : bisa jadi dengan password yang sama dan keyworld yang sama dalam waktu yang berbeda akan menghasilkan nilai yang berbeda, maka metode ini akan sulit sekali dibongkar.
- proses encrypt /decrypt cepat : seringkali suatu encrypt yang sulit di bongkar memerlukan waktu saat melakukan encrypt, proses ini sebenarnya tidak terlalu pengaruh jika pengakses system kita tidak banyak,tapi akan sangat mengganggu jika pengakses kita banyak.
untuk membuat fungsi decryptcreate Function [dbo].[encrypt] (@Password varchar(100) ,@Key varchar(100)) RETURNS varbinary(max)WITH EXECUTE AS CALLER BEGIN return EncryptByPassPhrase(@key, convert(varchar(100),@password)) END
Setelah anda buat, selanjutnya kita test hasilnya dengan script berikutCreate Function [dbo].[decrypt] (@Key varchar(100),@EncryptPwd varbinary(max)) RETURNS varchar(100)WITH EXECUTE AS CALLER BEGIN return convert(varchar(100),convert(varchar(100),decryptbypassphrase(@Key,@encryptPwd))) END
Hasilnya,dengan key dan password yang sama hasil dari @hsl1 dan @hsl2 berbeda, dan dari hasil @hsl1 dan @hsl2 ketika di decrypt dengan key yang sama akan kembali ke nilai aslinya. Selamat mencobadeclare @password as varchar(100) declare @key as varchar(100) set @password='Passw0rd' set @key='Supriyanto' declare @hsl1 as varbinary(max) declare @hsl2 as varbinary(max) declare @decr as varchar(100) declare @decr1 as varchar(100) print 'Eksekusi pertama ' SELECT @hsl1= [dbo].[encrypt] (@password,@Key) print @hsl1 select @decr=dbo.decrypt(@key,@hsl1) print @decr print '' print 'eksekusi kedua' SELECT @hsl2= [dbo].[encrypt] (@password,@Key) print @hsl2 select @decr1=dbo.decrypt(@key,@hsl2) print @decr1