Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Problem Decrypting in-memory
Hi,
I have one procedure to encrypt:
CREATE or REPLACE PROCEDURE encrypt_password (key_string IN varchar2, uname IN varchar2, password IN varchar2) IS
input_string VARCHAR2(16) := to_char(password); encrypted_string VARCHAR2(2048);
raw_encrypted_data RAW(128);
BEGIN
dbms_obfuscation_toolkit.DESEncrypt( input_string => input_string, key_string => key_string, encrypted_string => encrypted_string); raw_encrypted_data := UTL_RAW.CAST_TO_RAW(encrypted_string); dbms_output.put_line('Hex-RAW raw_encrypted_data: ' || rawtohex(raw_encrypted_data)); UPDATE LHDB set secure_pwd = encrypted_string WHERE username = uname; COMMIT;
END;
/
When I execute that in SQLPlus, I get:
SQL> exec encrypt_password('12345678', 'test1', 'testtesttesttest'); Hex-RAW raw_encrypted_data: 7B62AA0B153BC965D7B8D0E529F6222A
PL/SQL procedure successfully completed.
SQL> Now, I have another procedure that I want to use to decrypt a password that is in memory (rather than in a table):
CREATE or REPLACE PROCEDURE decrypt_password_inmemory (key_string IN varchar2, encrypted_string IN varchar2, decrypted OUT varchar2) IS
encrypted_raw RAW(128) := UTL_RAW.CAST_TO_RAW(encrypted_string); key_raw RAW(128) := UTL_RAW.CAST_TO_RAW(key_string);
decrypted_raw RAW(128);
-- decrypted_string VARCHAR2(2048);
BEGIN
dbms_obfuscation_toolkit.DESDecrypt( input => encrypted_raw, key => key_raw, decrypted_data => decrypted_raw); decrypted := UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw); dbms_output.put_line('Decrypted Password is: ' || decrypted);END;
When I try to execute this procedure, I'm getting what looks like RAW data?
SQL> var
variable x
datatype VARCHAR2(100)
SQL> exec decrypt_password_inmemory('12345678',
'7B62AA0B153BC965D7B8D0E529F6222
A', :x);
Decrypted Password is: -¡-*|X_Ñ?=Ää˜KÿX+Xµ·4Gj+¦Æ+uP$n-
PL/SQL procedure successfully completed.
X
-¡-*|X_Ñ?=Ää˜KÿX+Xµ·4Gj+¦Æ+uP$n-
Can anyone tell me what's wrong with this 'in-memory' procedure?
How do I get the original password (testtesttesttest) back as a varchar2?
Thanks,
Jim
Received on Tue Jun 21 2005 - 10:00:42 CDT