📄 get_enc_val_6.sql
字号:
CREATE OR REPLACE FUNCTION get_enc_val (
p_in_val IN VARCHAR2,
p_key IN VARCHAR2,
p_algorithm IN VARCHAR2 := 'AES128',
p_iv IN VARCHAR2 := NULL
)
RETURN VARCHAR2
IS
l_enc_val RAW (4000);
l_enc_algo PLS_INTEGER;
l_in RAW (4000);
l_iv RAW (4000);
l_key RAW (4000);
l_ret VARCHAR2 (4000);
BEGIN
l_enc_algo :=
CASE p_algorithm
WHEN 'DES'
THEN dbms_crypto.encrypt_des
WHEN '3DES_2KEY'
THEN dbms_crypto.encrypt_3des_2key
WHEN '3DES'
THEN dbms_crypto.encrypt_3des
WHEN 'AES128'
THEN dbms_crypto.encrypt_aes128
WHEN 'AES192'
THEN dbms_crypto.encrypt_aes192
WHEN 'AES256'
THEN dbms_crypto.encrypt_aes256
WHEN 'RC4'
THEN dbms_crypto.encrypt_rc4
END;
l_in := utl_i18n.string_to_raw (p_in_val, 'AL32UTF8');
l_iv := utl_i18n.string_to_raw (p_iv, 'AL32UTF8');
l_key := utl_i18n.string_to_raw (p_key, 'AL32UTF8');
l_enc_val :=
dbms_crypto.encrypt (src => l_in,
KEY => l_key,
iv => l_iv,
typ => l_enc_algo
+ dbms_crypto.chain_cbc
+ dbms_crypto.pad_pkcs5
);
l_ret := RAWTOHEX (l_enc_val);
RETURN l_ret;
END;
/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -