CREATE OR REPLACE FUNCTION ENCRYPT_AES (V_STR IN VARCHAR2)
RETURN VARCHAR2
AS
V_KEY_RAW RAW(32);
V_IV_RAW RAW(16);
V_STR_RAW RAW (2000);
V_RETURN_STR VARCHAR2 (2000);
V_TYPE PLS_INTEGER;
BEGIN
V_KEY_RAW := Hextoraw('69ebfd1ab33b1d56142b61921bb081c2ef41fec799d50f50e0884daadab0078c');
V_IV_RAW := Hextoraw('351945b97f988451da9696c507ab0593');
V_STR_RAW := UTL_I18N.STRING_TO_RAW(V_STR, 'GBK');
V_TYPE := DBMS_CRYPTO.ENCRYPT_AES256;
V_STR_RAW := DBMS_CRYPTO.ENCRYPT ( V_STR_RAW, V_TYPE, V_KEY_RAW, V_IV_RAW);
V_RETURN_STR := RAWTOHEX (V_STR_RAW);
RETURN V_RETURN_STR;
END;
declare
begin
ENCRYPT_AES('abcd');
end;
执行失败,失败原因:
[-6803]:非法的参数数据
-6803: DBMS_CRYPTO.ENCRYPT line 111
-6803: ENCRYPT_AES line 19
中间 V_TYPE 变量赋值的地方稍微修改下,然后测试看看是否正常了
。。。 V_TYPE := DBMS_CRYPTO.ENCRYPT_AES128+DBMS_CRYPTO.CHAIN_CBC+DBMS_CRYPTO.PAD_PKCS5; 。。。