function ibp_crypto_decrypt ( p_session_id in RAW) return raw is
l_decrypted_raw RAW(2048);
l_encrypted_raw RAW(2048) := p_session_id;
l_key RAW(128) := UTL_RAW.cast_to_raw('abcdefgh');
begin
dbms_output.put_line('l_encrypted_raw '||'='||l_encrypted_raw);
l_decrypted_raw := DBMS_CRYPTO.decrypt(src => l_encrypted_raw,
typ => DBMS_CRYPTO.des_cbc_pkcs5,
key => l_key);
DBMS_OUTPUT.put_line('Decrypted : ' || UTL_RAW.cast_to_varchar2(l_decrypted_raw)) ;
return l_decrypted_raw;--RAWTOHEX(UTL_RAW.cast_to_varchar2(l_decrypted_raw));
exception when others
then
dbms_output.put_line(' ibp_crypto_decrypt'||'='||sqlerrm||dbms_utility.format_error_backtrace);
end;
ibp_crypto_decrypt=ORA-28817: PL/SQL 函数返回错误。
ORA-06512: at "SYS.DBMS_CRYPTO_FFI", line 67
ORA-06512: at "SYS.DBMS_CRYPTO", line 44
ORA-06512: at "IBOXV5_TEST.IBK_CRYPTO_ENCRYPTION", line 28
我已经通过实际值的加密完成了您的示例,并且它按预期工作。您确定您正确加密了该值吗?
DECLARE
l_input VARCHAR2(30) := utl_raw.cast_to_raw('12345678');
l_encrypted_raw RAW(2048);
l_decrypted_raw RAW(2048);
l_key RAW(128) := utl_raw.cast_to_raw('abcdefgh');
BEGIN
l_encrypted_raw := dbms_crypto.encrypt(src=>l_input, typ=>dbms_crypto.des_cbc_pkcs5, key=>l_key);
l_decrypted_raw := dbms_crypto.decrypt(src=>l_encrypted_raw, typ=>dbms_crypto.des_cbc_pkcs5, key=>l_key);
dbms_output.put_line('Decrypted : ' || utl_raw.cast_to_varchar2(l_decrypted_raw));
END;
/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)