首页 > 解决方案 > 无法在 oracle 中解码原始字符串;脚本产生 ORA-28817

问题描述

下面是一个简单的脚本,它打算从 base64 解码并使用 3DES 解密

DECLARE

    ciphertext           VARCHAR2(100) := '\am2cZofWi5vGz3Zk1qzqXcZuLK8Fqso';
    l_ovalue             RAW(1000);
    l_decrypted_data     RAW (4000);
    key          RAW(100)  := utl_raw.cast_to_raw('xxx');
BEGIN
    l_ovalue := utl_encode.base64_decode(utl_raw.cast_to_raw(ciphertext));

    l_decrypted_data := DBMS_CRYPTO.DECRYPT(l_ovalue, dbms_crypto.ENCRYPT_3DES + dbms_crypto.CHAIN_CBC + dbms_crypto.PAD_PKCS5 , key);
    dbms_output.put_line('dec STR='||UTL_RAW.CAST_TO_VARCHAR2(l_decrypted_data));
END;

错误跟踪:

[2021-11-15 00:39:45] [99999][28817]
[2021-11-15 00:39:45] ORA-28817: PL/SQL function returned an error.
[2021-11-15 00:39:45] ORA-06512: at "SYS.DBMS_CRYPTO_FFI", line 67
[2021-11-15 00:39:45] ORA-06512: at "SYS.DBMS_CRYPTO", line 44
[2021-11-15 00:39:45] ORA-06512: at line 9
[2021-11-15 00:39:45] Position: 0

此错误的原因是什么以及如何解决?

标签: oracle

解决方案


推荐阅读