Menu Horisontal

Sabtu, 15 Juni 2013

Enkripsi dan Dekripsi di SQL Server

Sumber : http://ngisorceri.wordpress.com/2010/12/20/enkripsi-dan-dekripsi-di-sql-server/

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 melakukan encrypt/decrypt dalam perintah Transact SQL, SQL Server telah menyediakan beberapa fungsi internal yang dapat kita gunakan, fungsi itu relatif cepat , mudah digunakan, dan yang terpenting relatif sulit di bongkar, karena selalu menghasilkan nilai yang berubah. Kita tinggal mengkombinasikan fungsi convert dan  EncryptByPassPhrase untuk membuat perintah encrypt, dan fungsi convert dan decryptbypassphrase untuk mengembalikan nilai fungsi. Berikut ini adalah perintahnya
create 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
untuk membuat fungsi decrypt
Create 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
Setelah anda buat, selanjutnya kita test hasilnya dengan script berikut
declare @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
Test Hasil encrypt/decrypt
Test Hasil encrypt/decrypt
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 mencoba

Tidak ada komentar: