目录
oracle加密encrypt,解密decrypt
有的oracle版本没有加解密函数,以下操作可以手动添加
oracle数据使用加密解密,我们首先要先赋予dbms_crypto权限给用户。
grant execute on dbms_crypto to user;
加密
create or replace function f_encrypt_data(number_in in varchar2,
secretkey in varchar2) return raw is
number_in_raw raw(128) := utl_i18n.string_to_raw(number_in, 'al32utf8');
key_number varchar2(32) := secretkey;
key_raw raw(128) := utl_raw.cast_from_number(key_number);
encrypted_raw raw(128);
begin
encrypted_raw := dbms_crypto.encrypt(src => number_in_raw,
typ => dbms_crypto.des_cbc_pkcs5,
key => key_raw);
return encrypted_raw;
end;
解密
create or replace function f_decrypt_data(encrypted_raw in raw,
secretkey in varchar2)
return varchar2 is
decrypted_raw raw(128);
key_number varchar2(32) := secretkey;
key_raw raw(128) := utl_raw.cast_from_number(key_number);
begin
decrypted_raw := dbms_crypto.decrypt(src => encrypted_raw,
typ => dbms_crypto.des_cbc_pkcs5,
key => key_raw);
return utl_i18n.raw_to_char(decrypted_raw, 'al32utf8');
end;