当我使用dbms_crypto
时,生产环境会有不同的结果
加密/解密oracle,该功能在其他环境中运行良好。
create or replace PACKAGE BODY GEN_PAQ_ENCRIPTA_EXP AS
juego_carac VARCHAR(8) := 'AL32UTF8';
raw_vector RAW(128) := hextoraw('xxxxxxxxx');
raw_key RAW(128) := hextoraw('xxxxxxxxx');
encryption_mode NUMBER := SYS.DBMS_CRYPTO.ENCRYPT_AES256 + SYS.DBMS_CRYPTO.CHAIN_CBC + SYS.DBMS_CRYPTO.PAD_PKCS5;
FUNCTION EncriptaBlob(Param1 IN BLOB) RETURN BLOB IS
salida BLOB;
duratempo INTEGER := sys.dbms_lob.CALL;
BEGIN
IF Param1 IS NULL THEN
RETURN NULL;
END IF;
sys.dbms_lob.createtemporary(salida, TRUE,duratempo);
sys.dbms_crypto.Encrypt(salida, Param1, encryption_mode, raw_key, raw_vector);
return salida;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
RAISE;
END EncriptaBlob;
FUNCTION DesEncriptaBlob(Param1 IN BLOB) RETURN BLOB IS
salida BLOB;
duratempo INTEGER := sys.dbms_lob.CALL;
BEGIN
IF Param1 IS NULL THEN
RETURN NULL;
END IF;
sys.dbms_lob.createtemporary(salida, TRUE,duratempo);
sys.dbms_crypto.Decrypt(salida, Param1, encryption_mode, raw_key, raw_vector);
return salida;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
RAISE;
END DesEncriptaBlob;
END GEN_PAQ_ENCRIPTA_EXP;
参数' Param1'是base64中的pdf文件,大小约为150000字节。 参数' salida'当我调用encrypt和decrypt返回这个pdf base64但是有16个额外字符(方字符Byte = 16)时,这只在生产数据库环境中。
我很困惑,欢迎任何帮助。