SQL Server Indonesia User Groups Community Cell and Column-Level Encryption - suherman
Welcome to SQL Server User Group Indonesia
Sign in JoinHelp | Sign In Live ID

suherman

Share ur Knowledge

Cell and Column-Level Encryption

kadangkala kita menyimpan sebuah data kedalam sebuah tabel di database yang sifat datanya sangat rahasia misalnya menyimpan data username dan password dari pengguna sebuah aplikasi.

dalam artikel ini saya mencoba berbagi cara mengenai melakukan enkripsi dengan menggunakan asymmetric key.

pertama kita siapkan sebuah tabel T_Pengguna yang berisi field Fusername dan Fpassword

USE [AdventureWorks]
GO 
  
CREATE TABLE [dbo].[T_Pengguna]( 
[FUsername] [nvarchar](50) NOT NULL, 
[FPassword] [varbinary](max) NOT NULL, 
CONSTRAINT [PK_T_Pengguna] PRIMARY KEY CLUSTERED 
( 
[FUsername] ASC 
) 
) ON [PRIMARY] 
  
GO 

kemudian langkah selanjutnya kita buat terlebih dahulu asymmetric key nya terlebih dahulu.

create asymmetric key AsymKeyAdvWorks
authorization dbo with algorithm = RSA_2048 
encryption by password= N'P@ssw0rdYgB4ik' 

nah sampai sini kita bisa mulai ber operasi untuk melakukan enkripsi terhadap sebuah cell atau field. kita akan coba input 2 buah user :

Declare @Usrnme1 Varchar(50) = 'Pengguna_1'
Declare @UsrnmePsw1 Varchar(50) = 'PaswwordK3reN' 
Declare @Usrnme2 Varchar(50) = 'Pengguna_2' 
Declare @UsrnmePsw2 Varchar(50) = 'B4nJar8arU' 
  
insert into T_Pengguna values(@Usrnme1, 
ENCRYPTBYASYMKEY(ASYMKEY_ID('AsymKeyAdvWorks'),@UsrnmePsw1)) 
  
insert into T_Pengguna values(@Usrnme2, 
ENCRYPTBYASYMKEY(ASYMKEY_ID('AsymKeyAdvWorks'),@UsrnmePsw2)) 
  
go 

nah sampai sini kita telah berhasil melakukan enkripsi untuk Password-password tadi yang dimasukkan kedalam tabel T_Pengguna.

image

Mungkin untuk kasus ini sebenarnya tidak perlu dilakukan proses dekripsi. Namun apabila suatu waktu diperlukan perlakuan deskripsi field FPassword dapat dilakukan dengan T-SQL berikut :

select Fusername,CONVERT(varchar(max),
DecryptByAsymKey(ASYMKEY_ID('AsymKeyAdvWorks'), 
FPassword,N'P@ssw0rdYgB4ik')) as pw from T_Pengguna 

Ok, selamat mencoba !