функция расшифровки - не показывает читаемую строку - PullRequest
2 голосов
/ 29 сентября 2011

Я создал эту функцию для расшифровки пароля и его работы, но показывает странные символы, подобные этому ��5d[���������.Я использую oracle xe 10g

create or replace
function decrypt (val VARCHAR) return varchar2 is

input_string varchar2(2048) := val;
key_string VARCHAR2(10) := 'xpto';
decrypted_string VARCHAR2(2048);

begin

 dbms_output.put_line(input_string);

 dbms_obfuscation_toolkit.DESDecrypt(
                                input_string => input_string, 
                                key_string => key_string, 
                                decrypted_string => decrypted_string );

 dbms_output.put_line('> decrypted string output : ' || decrypted_string);
 return decrypted_string;
 end;

То, что я делаю неправильно, должно выглядеть как читаемая строка.

1 Ответ

3 голосов
/ 29 сентября 2011
  1. Зачем вам нужно декодировать пароль? Почему бы не сохранить его хеш ?

  2. Существует несколько ограничений размера входной строки и размера ключа (объяснение в онлайн-документе ).

Вот рабочий пример с Oracle 10.2.0.3:

.
SQL> VARIABLE v_in VARCHAR2(64);
SQL> VARIABLE v_enc VARCHAR2(64);
SQL> VARIABLE v_out VARCHAR2(64);
SQL> DECLARE
  2     l_key VARCHAR2(8) := rpad('my_key', 8, 'x'); -- 64-bit key
  3  BEGIN
  4     -- input size must be a multiple of 8 bytes
  5     :v_in               := '12345678';
  6     :v_enc := dbms_obfuscation_toolkit.desEncrypt(input_string => :v_in,
  7                                                   key_string => l_key);
  8     :v_out := dbms_obfuscation_toolkit.desDecrypt(input_string => :v_enc,
  9                                                   key_string => l_key);
 10  END;
 11  /

PL/SQL procedure successfully completed
v_in
---------
12345678
v_enc
---------
þæHI«Ó¹-
v_out
---------
12345678
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...