Mas Reka, Sepertinya anda salah dalam melakukan DECRYPT nya, bukan pada program yg anda buat tapi pada test datanya.
ENCRYPT ==> OK SQL> select branch_id, user_id, toolkit.encrypt(password) from m_user_system; DECRYPT ==> NGGAK OK SQL> select branch_id, user_id, toolkit.decrypt(password) from m_user_system; KENAPA? Karena yg anda decrypt adalah "NILAI" yang plain (belum diencrypt) Coba test pakai "decrypt(hasil_encrypt)" sbb: SQL> select branch_id, user_id, TOOLKIT.DECRYPT(toolkit.encrypt (password)) from m_user_system; CMIIW, Bowo --- In [email protected], Reka Sukamto <[EMAIL PROTECTED]> wrote: > > Teman2, > > Saya mempunyai package sbb,sebagai informasi apabila saya menggunakan Oracle Database 10g Enterprise Edition Release 10.1.0.2.0. > ada eror seperti diatas. Tp saya coba di database 9i, tidak ada masalah. > Mohon bantuannya kepada rekan2 sekalian, bila ada yg tau cara mengatasinya. > > Terima kasih sebelumnya. > > -- Package header > CREATE OR REPLACE PACKAGE MIRRORSYS.toolkit AS > FUNCTION encrypt (p_text IN VARCHAR2) RETURN VARCHAR2; > FUNCTION decrypt (p_raw IN VARCHAR2) RETURN VARCHAR2; > END toolkit; > -- Package body > -- Package Body > CREATE OR REPLACE PACKAGE BODY toolkit AS > g_key RAW(32767) := UTL_RAW.cast_to_raw('12345678'); > g_pad_chr VARCHAR2(1) := '~'; > PROCEDURE padstring (p_text IN OUT VARCHAR2); > -- > -------------------------------------------------- > FUNCTION encrypt (p_text IN VARCHAR2) RETURN VARCHAR2 > IS > -- > -------------------------------------------------- > l_text VARCHAR2(32767) := p_text; > l_encrypted RAW(32767); > BEGIN > padstring(l_text); > DBMS_OBFUSCATION_TOOLKIT.desencrypt(input => > UTL_RAW.cast_to_raw(l_text),key => g_key, > encrypted_data => l_encrypted); > RETURN l_encrypted; > END; > -- > -------------------------------------------------- > -- > -------------------------------------------------- > FUNCTION decrypt (p_raw IN VARCHAR2) RETURN VARCHAR2 IS > -- > -------------------------------------------------- > l_decrypted VARCHAR2(32767); > BEGIN > DBMS_OBFUSCATION_TOOLKIT.desdecrypt(input => > p_raw, > key => > g_key, > decrypted_data > => l_decrypted); > RETURN > RTrim(UTL_RAW.cast_to_varchar2(l_decrypted), > g_pad_chr); > END; > -- > -------------------------------------------------- > -- > -------------------------------------------------- > PROCEDURE padstring (p_text IN OUT VARCHAR2) IS > -- > -------------------------------------------------- > l_units NUMBER; > BEGIN > IF LENGTH(p_text) MOD 8 > 0 THEN > l_units := TRUNC(LENGTH(p_text)/8) + 1; > p_text := RPAD(p_text, l_units * 8, g_pad_chr); > END IF; > END; > -- > -------------------------------------------------- > END toolkit; > / > > SQL> select branch_id, user_id, toolkit.encrypt(password) from m_user_system; > BRA USER_ID TOOLKIT.ENCRYPT (PASSWORD) > --- ---------------------------------------- ---------------------- --------------------------------- > 888 reka2 83220A4B17510E04BC93CE8BF322E950 > 888 aa 4BDC506014466A73 > 888 re 29816F4C8FFA41CF > 888 cc 5206E93E1B30E08B6125B84E91589B01 > DPK toni 5AEE323589D1C514C8E7D8AF3624E8DB942C46AE56F76A4A24F6FEFDE8D7C5CB2A551 A75C0268D5D8 > > 5 rows selected. > > SQL> select branch_id, user_id, toolkit.decrypt(password) from m_user_system; > ERROR: > ORA-28232: invalid input length for obfuscation toolkit > ORA-06512: at "SYS.DBMS_OBFUSCATION_TOOLKIT_FFI", line 40 > ORA-06512: at "SYS.DBMS_OBFUSCATION_TOOLKIT", line 138 > ORA-06512: at "MIRRORSYS.TOOLKIT", line 31 > > no rows selected > > > --------------------------------- > Be a better Heartthrob. Get better relationship answers from someone who knows. > Yahoo! Answers - Check it out. > > [Non-text portions of this message have been removed] >

