欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle加密encrypt,解密decrypt

程序员文章站 2022-06-17 21:55:02
[toc] oracle加密encrypt,解密decrypt 有的oracle版本没有加解密函数,以下操作可以手动添加 oracle数据使用加密解密,我们首先要先赋予dbms_crypto权限给用户。 加密 解密 ......

目录

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;