oracle encry,oracle加密encrypt,解密decrypt

这篇博客介绍了如何在不支持加密解密函数的Oracle版本中,为用户手动添加加密和解密功能。首先通过GRANT语句赋予用户执行DBMS_CRYPTO的权限,然后分别创建F_ENCRYPT_DATA和F_DECRYPT_DATA两个函数,使用DES_CBC_PKCS5算法进行加密和解密,其中涉及UTL_I18N和UTL_RAW包的函数来转换数据类型。
摘要由CSDN通过智能技术生成

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值