-- 示例(不考虑BLOB类型的加密)
DECLARE
  v_str VARCHAR2(20) := '12345678'; -- 加密的字符串
  v_type PLS_INTEGER := dbms_crypto.DES_CBC_PKCS5;  -- 加密类型
  v_key RAW(256);
  v_key1 VARCHAR2(100) := 'oracle9i012';
encrypted_raw RAW(256);
  decrypted_raw RAW(256);
BEGIN
  -- 生成随机16位密钥 (1个byte等于两位raw)
  v_key := dbms_crypto.RandomBytes(8);
  dbms_output.put_line('Encrypted Key: ' || v_key);
-- 加密
  encrypted_raw := dbms_crypto.Encrypt(src => utl_raw.cast_to_raw(v_str), typ => v_type, key => v_key);
  dbms_output.put_line('Encrypted Raw: ' || encrypted_raw);
  dbms_output.put_line('Encrypted hex value: ' || rawtohex(encrypted_raw));
-- 解密
  decrypted_raw := dbms_crypto.Decrypt(src => encrypted_raw, typ => v_type, key => v_key);
  dbms_output.put_line('Decrypted String: ' || utl_raw.cast_to_varchar2(decrypted_raw));
END;
可以加加密和解密的内容写入函数中,方便使用的时候直接调用。

