ENCRYPT
接口/方法功能
- 加密RAW或VARCHAR类型数据,统一返回RAW类型加密数据。
- 加密BLOB或CLOB类型数据,统一返回BLOB类型加密数据。
加密RAW或VARCHAR类型数据
接口/方法声明
sql
-- RAW类型
FUNCTION Encrypt(
src IN RAW,
typ IN INTEGER,
key IN RAW,
iv IN RAW DEFAULT NULL
) RETURN RAW;
-- VARCHAR类型
FUNCTION Encrypt(
src IN VARCHAR,
typ IN INTEGER,
key IN VARCHAR,
iv IN VARCHAR DEFAULT NULL
) RETURN RAW;
参数说明
参数名称 | 参数类型 | 参数解释 | 默认值 |
---|---|---|---|
src | RAW/VARCHAR | 待加密的数据 | 无 |
typ | INTEGER | 加密类型/套件,由块加密算法、模式、填充方式组成 | 无 |
key | RAW/VARCHAR | 用于加密解密的密钥 | 无 |
iv | RAW/VARCHAR | 初始化向量 | NULL |
操作示例
加密VARCHAR类型数据
sql
DECLARE
typ INTEGER := DBMS_CRYPTO.ENCRYPT_AES + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5;
src VARCHAR := 'abcdefghijklmnopqrstuvwxyz';
enc_bin RAW;
key VARCHAR := '这是key';
BEGIN
enc_bin:=DBMS_CRYPTO.ENCRYPT(src,typ,key);
SEND_MSG(enc_bin);
END;
/
加密BLOB或CLOB类型数据
接口/方法声明
sql
-- BLOB类型
PROCEDURE Encrypt(
dst IN OUT BLOB,
src IN BLOB,
typ IN INTEGER,
key IN RAW,
iv IN RAW DEFAULT NULL
);
-- CLOB类型
PROCEDURE Encrypt(
dst IN OUT BLOB,
src IN CLOB,
typ IN INTEGER,
key IN RAW,
iv IN RAW DEFAULT NULL
);
参数说明
参数名称 | 参数类型 | 参数解释 | 默认值 |
---|---|---|---|
dst | BLOB | 保存加密结果的容器,预先声明的BLOB | 无 |
src | BLOB/CLOB | 待加密的数据 | 无 |
typ | INTEGER | 加密类型/套件,由块加密算法、模式、填充方式组成 | 无 |
key | RAW | 用于加密解密的密钥 | 无 |
iv | RAW | 初始化向量 | NULL |
操作示例
加密BLOB类型数据
sql
-- 假设存在表t1(a INT, b BLOB)
-- 存有一行数据(1, <BLOB>)
-- 对该BLOB执行加密
CREATE TABLE t1(a INT, b BLOB);
INSERT INTO t1 (a, b) VALUES(1, ?); <# /home/test/test.txt;
DECLARE
typ INTEGER := DBMS_CRYPTO.ENCRYPT_AES + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5;
dst BLOB = UTL_RAW.CAST_TO_RAW('1');
src BLOB = UTL_RAW.CAST_TO_RAW('1');
key VARCHAR = 'mykeymykeymykeym';
iv VARCHAR = 'abcdef0123456789';
BEGIN
SELECT b INTO src FROM t1 WHERE a = 1; --将表中BLOB数据加载至src中
DBMS_CRYPTO.ENCRYPT(dst,src,typ,key,iv);
SEND_MSG(RAWTOHEX(dst));
END;
/