Я выполнил нижеприведенную функцию для преобразования моей строки в 128-битный зашифрованный текст AES в Oracle
create or replace function get_enc_val
(
p_in_val in varchar2,
p_key in varchar2
)
return raw
is
l_enc_val raw(4000);
begin
l_enc_val := dbms_crypto.encrypt
(
src => utl_i18n.string_to_raw (p_in_val, 'AL32UTF8'),
key => utl_i18n.string_to_raw (p_key, 'AL32UTF8'),
typ => dbms_crypto.encrypt_aes128 +
dbms_crypto.chain_cbc +
dbms_crypto.pad_zero
);
return l_enc_val;
end;
Когда я запускаю select get_enc_val ('1234', '1234567890ghjkle') из dual; он работает нормально и дает мне зашифрованный текст, но когда я хочу расшифровать его с помощью функции ниже, я получаю сообщение об ошибке "ORA-01465: неверное шестнадцатеричное число"
create or replace function get_dec_val
(
p_in_val in RAW,
p_key in RAW
)
return VARCHAR2
is
l_enc_val VARCHAR2(4000);
begin
l_enc_val := dbms_crypto.DECRYPT
(
src => utl_i18n.RAW_TO_CHAR (p_in_val, 'AL32UTF8'),
key => utl_i18n.RAW_TO_CHAR (p_key, 'AL32UTF8'),
typ => dbms_crypto.encrypt_aes128 +
dbms_crypto.chain_cbc +
dbms_crypto.pad_zero
);
return l_enc_val;
end;
select get_dec_val('12519D97D5299702A284F2E530F58A20','1234567890ghjkle') from dual
Может кто-нибудь помочь мне понять вопрос?