当前位置: 首页 > article >正文

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;

效果

  • 加密
    在这里插入图片描述
  • 解密
    在这里插入图片描述

http://www.kler.cn/a/445890.html

相关文章:

  • [LeetCode-Python版] 定长滑动窗口1(1456 / 643 / 1343 / 2090 / 2379)
  • 基于Springboot人口老龄化社区服务与管理平台【附源码】
  • 【Java基础面试题024】Java中包装类型和基本类型的区别是什么?
  • neo4j 图表数据导入到 TuGraph
  • [react]redux异步处理和重写useDispatch
  • 汽车IVI中控开发入门及进阶(三十九):ADAS的车道线检测
  • 【C++ DFS 图论】1519. 子树中标签相同的节点数|1808
  • 解决 Ubuntu 20.04 上因 postmaster.pid 文件残留导致的 PostgreSQL 启动失败问题
  • L24.【LeetCode笔记】 杨辉三角
  • 如何彻底删除电脑数据以防止隐私泄露
  • 【mac 终端美化】oh my zsh
  • GTID详解
  • 【从零开始入门unity游戏开发之——C#篇21】C#面向对象的封装——`this`扩展方法、运算符重载、内部类、`partial` 定义分部类
  • 【Verilog】实验九 存储器设计与IP调用
  • 【论文复现】找出图像中物体的角点
  • 热更新解决方案4——xLua热补丁
  • [react] 优雅解决typescript动态获取redux仓库的类型问题
  • ES倒排索引
  • 全链路触达,Klaviyo 助力跨境电商打造数据驱动的智能化营销体验
  • 区间预测 | MATLAB实现QRDNN深度神经网络分位数回归时间序列区间预测
  • PDF无法打印!怎么办?
  • 数据结构_双向循环链表实战
  • 大数据:HDFS:特性、架构
  • C# 中的闭包
  • 【C++】C++中的lambda函数详解
  • Unity ECS和OOP优劣对比