Encrypt dan Decrypt string di Oracle 9i dan 10g
14 Aug 2008
Ada beberapa macam cara untuk melakukan encrypt dan decrypt string di oracle. Biasanya ini digunakan bila kita ingin menyimpan data password atau data-data penting lainnya.
berikut adalah salah satunya.
Untuk Oracle 9i menggunakan dbms_obfuscation_toolkit package
(Jangan lupa untuk memberikan privileges execute untuk package diatas kepada user yang menjalankan.)
CREATE OR REPLACE PACKAGE Cryptit AS
FUNCTION encrypt( Str VARCHAR2 ) RETURN RAW;
FUNCTION decrypt( xCrypt VARCHAR2 ) RETURN VARCHAR2;
END Cryptit;
CREATE OR REPLACE PACKAGE BODY Cryptit AS
crypt_raw RAW(2000);
crypt_str VARCHAR(2000);
-- Encrypt string --
FUNCTION encrypt( Str VARCHAR2 ) RETURN RAW AS
l INTEGER := LENGTH(str);
i INTEGER;
padblock RAW(2000);
Cle RAW(8) := UTL_RAW.CAST_TO_RAW('frankzap');
BEGIN
i := 8-MOD(l,8);
padblock := utl_raw.cast_to_raw(str||RPAD(CHR(i),i,CHR(i)));
dbms_obfuscation_toolkit.DESEncrypt(
input => padblock,
KEY => Cle,
encrypted_data => crypt_raw );
RETURN crypt_raw ;
END;
-- Decrypt string --
FUNCTION decrypt( xCrypt VARCHAR2 ) RETURN VARCHAR2 AS
l NUMBER;
Cle RAW(8) := UTL_RAW.CAST_TO_RAW('frankzap');
crypt_raw RAW(2000) := utl_raw.cast_to_raw(utl_raw.cast_to_varchar2(xCrypt)) ;
BEGIN
dbms_obfuscation_toolkit.DESDecrypt(
input => xCrypt,
KEY => Cle,
decrypted_data => crypt_raw );
crypt_str := utl_raw.cast_to_varchar2(crypt_raw);
l := LENGTH(crypt_str);
crypt_str := RPAD(crypt_str,l-ASCII(SUBSTR(crypt_str,l)));
RETURN crypt_str;
END;
END Cryptit;
Untuk test nya :
DECLARE
LC$Code VARCHAR2(100) := 'Ini contoh 1 encrypt dan decrypt!' ;
BEGIN
-- encrypt string --
LC$Code := Cryptit.Encrypt( LC$Code ) ;
dbms_output.put_line( LC$Code ) ;
-- decrypt string --
LC$Code := Cryptit.Decrypt( LC$Code ) ;
dbms_output.put_line( LC$Code ) ;
END ;
Untuk Oracle 10g menggunakan dbms_crypto package
(Jangan lupa untuk memberikan privileges execute untuk package diatas kepada user yang menjalankan.)
DECLARE
LC$Source VARCHAR2(60) := 'Ini contoh 1 encrypt dan decrypt!';
LR$Source RAW(128) := utl_raw.cast_to_raw(LC$Source);
LR$Key RAW(128) := utl_raw.cast_to_raw('okecoy$enc$dec');
LR$Crypted RAW(2048);
LR$Decrypted RAW(2048);
BEGIN
dbms_output.put_line('Source string : ' || LC$Source);
LR$Crypted := dbms_crypto.encrypt(LR$Source,
dbms_crypto.des_cbc_pkcs5, LR$Key);
dbms_output.put_line('Hasil Encrypt : ' ||
RAWTOHEX(utl_raw.cast_to_raw(LR$Crypted)));
LR$Decrypted := dbms_crypto.decrypt(src => LR$Crypted,
typ => dbms_crypto.des_cbc_pkcs5, key => LR$Key);
dbms_output.put_line('Hasil Decrypt : ' ||
utl_raw.cast_to_varchar2(LR$Decrypted));
END;








11-November-2008 pukul 15:27
Nanya om, gimana caranya manggil file excel yang bisa langsung ditampilkan di form oracle, baik versi 6i maupun versi 10g, kalau bisa yang tidak pake odbc om???