Oracle加密解密函数

首先以 sys 用户授权执行 DBMS_CRYPTO 包:
GRANT EXECUTE ON SYS.DBMS_CRYPTO TO YPHOA;
创建一张表,有两个字段,一个字段是要加密码数据的ID,别一个字段是加密key

加密方法:
CREATE OR REPLACE FUNCTION initbudgetEncrypt(p_key IN VARCHAR2, p_in IN VARCHAR2)
RETURN RAW IS
ENCRYPTED_RAW RAW(4000);
ENCRYPTION_TYPE PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES128 +
DBMS_CRYPTO.CHAIN_CBC +
DBMS_CRYPTO.PAD_PKCS5;
BEGIN
ENCRYPTED_RAW := DBMS_CRYPTO.ENCRYPT(SRC => UTL_I18N.STRING_TO_RAW(p_in,'AL32UTF8'),
TYP => ENCRYPTION_TYPE,
KEY => p_key);
RETURN ENCRYPTED_RAW;
END;

解密方法:
CREATE OR REPLACE FUNCTION initbudgetTest(p_key IN VARCHAR2,
p_in IN RAW)
RETURN VARCHAR2 IS
OUTPUT_STRING VARCHAR2(4000);
DECRYPTED_RAW RAW(4000);
ENCRYPTION_TYPE PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES128 +
DBMS_CRYPTO.CHAIN_CBC +
DBMS_CRYPTO.PAD_PKCS5;
BEGIN
DECRYPTED_RAW := DBMS_CRYPTO.DECRYPT(SRC => p_in,
TYP => ENCRYPTION_TYPE,
KEY => p_key);
OUTPUT_STRING := UTL_I18N.RAW_TO_CHAR(DECRYPTED_RAW, 'AL32UTF8');
RETURN OUTPUT_STRING;
END;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值