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.

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 !