oracle AES CBC,128位密钥加解密方法

方法脚本

前提:需要dbms_crypto包

-- 加密
CREATE OR REPLACE FUNCTION aes_cbc_encrypt(
    p_input VARCHAR2,--原文
    p_key VARCHAR2,--密钥
    p_iv VARCHAR2--偏移量
) RETURN VARCHAR2 IS
    encrypted_raw varchar2(2000);
BEGIN
    encrypted_raw := DBMS_CRYPTO.Encrypt(
        src => utl_raw.cast_to_raw(CONVERT(p_input,'AL32UTF8')),
        typ => DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,
        key => utl_raw.cast_to_raw(p_key),
        iv => utl_raw.cast_to_raw(p_iv)
    );
    DBMS_OUTPUT.PUT_LINE(encrypted_raw);
    RETURN UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.base64_encode(encrypted_raw));
END;

--解密
CREATE OR REPLACE FUNCTION aes_cbc_decrypt(
    p_input VARCHAR2,--密文
    p_key VARCHAR2,--密钥
    p_iv VARCHAR2--偏移量
) RETURN VARCHAR2 IS
    decrypted_raw VARCHAR2(2000);
BEGIN       
    decrypted_raw := DBMS_CRYPTO.DECRYPT(
        src => UTL_ENCODE.BASE64_DECODE(utl_raw.cast_to_raw(p_input)),
        typ => DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,
        key =>  utl_raw.cast_to_raw(p_key),
        iv => utl_raw.cast_to_raw(p_iv)
    );
    DBMS_OUTPUT.PUT_LINE(decrypted_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、付费专栏及课程。

余额充值