Enkripsi dengan Oracle Package


Procedure dan function yang berhubungan dengan algoritma enkripsi data dapat ditemukan di package DBMS_CRYPTO. Aku mencoba latihan sederhana dengan membuat sebuah fungsi enkripsi seperti berikut:

create or replace FUNCTION ENKRIP
( nilai IN VARCHAR2, key IN VARCHAR2
) RETURN RAW AS
nilai_raw RAW(2000);
key_raw RAW(2000);
nilai_terenkripsi RAW(2000);
BEGIN
nilai_raw := utl_i18n.string_to_raw(nilai,
'AL32UTF8');
key_raw := utl_i18n.string_to_raw(key,
'AL32UTF8');
nilai_terenkripsi := dbms_crypto.encrypt(
src => nilai_raw,
typ => dbms_crypto.des_cbc_pkcs5,
key => key_raw
);
return nilai_terenkripsi;
END ENKRIP;

Pada fungsi di atas, aku harus menerjemahkan nilai yang akan di-enkripsi beserta key-nya ke dalam tipe data RAW, karena fungsi DBMS_CRYPT.ENCRYPT hanya menerima data dalam format RAW. Contoh di atas menggunakan algoritma enkripsi DES. Berikut ini adalah fungsi yang melakukan decrypt:

create or replace FUNCTION DEKRIP
( nilai IN raw, key IN VARCHAR2
) RETURN VARCHAR2 AS
nilai_raw RAW(2000);
key_raw RAW(2000);
nilai_dekrip RAW(2000);
BEGIN
key_raw := utl_i18n.string_to_raw(key,
'AL32UTF8');
nilai_dekrip := dbms_crypto.decrypt(
src => nilai,
typ => dbms_crypto.des_cbc_pkcs5,
key => key_raw
);
return utl_i18n.raw_to_nchar(nilai_dekrip,
'AL32UTF8');
END DEKRIP;

Sebagai contoh, aku melakukan enkripsi data VARCHAR2 ‘JOCKI HENDRY’ dengan key ‘testtesttest’:

select enkrip('JOCKI HENDRY', 'testtesttest') from dual;

yang menghasilkan:

BEB9B507432B91E116EC3F07364E38C5

Hasil decrypt-nya di dapat dengan:

select dekrip('BEB9B507432B91E116EC3F07364E38C5', 'testtesttest') from dual;

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s