get_enc_val_6.sql
来自「Oracle PLSQL for DBAs 源代码」· SQL 代码 · 共 48 行
SQL
48 行
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 + =
减小字号Ctrl + -
显示快捷键?