Oracle数据base64加密简单方法

简介: Oracle数据base64加密简单方法

前一段时间需要对Oracle数据进行加解密,因为Oracle中没有类似MySQL的to_base64函数,所以看资料写了类似的函数实现加解密。步骤如下:
首先需要先授权加解密函数,修改 XXXX 为自己的用户,然后在Oracle数据库中执行。
Grant execute on dbms_crypto to XXXX;
Grant execute on dbms_sqlhash to XXXX;
Grant execute on dbms_obfuscation_toolkit to XXXX;
Grant execute on dbms_obfuscation_toolkit_ffi to XXXX;
Grant execute on dbms_crypto_ffi to XXXX;

在Oracle数据库上创建加密函数:
create or replace function my_encryption(

my_str varchar2 ,
my_key varchar2

)
return varchar2
as

my_key_raw raw(16) ;
my_str_raw raw(2000) ;
my_return_str varchar2(2000) ;
my_type pls_integer ;

begin

my_key_raw := utl_i18n.string_to_raw(my_key,'utf8') ;
my_str_raw := utl_i18n.string_to_raw(my_str,'utf8') ;
my_type := dbms_crypto.encrypt_aes128+dbms_crypto.chain_ecb+dbms_crypto.pad_pkcs5 ;
my_str_raw := dbms_crypto.encrypt(src => my_str_raw , typ => my_type, key => my_key_raw) ;
my_return_str := utl_raw.cast_to_varchar2(utl_encode.base64_encode(my_str_raw));

return my_return_str ;
end;

在Oracle数据库上创建解密函数:
create or replace function my_decryption(

my_str varchar2 ,
my_key varchar2

)
return varchar2
as

my_key_raw raw(16) ;
my_str_raw raw(2000) ;
my_return_str varchar2(2000) ;
my_type pls_integer ;

begin

my_key_raw := utl_i18n.string_to_raw(my_key,'utf8') ;
my_str_raw := utl_encode.base64_decode(utl_raw.cast_to_raw((my_str)));
my_type := dbms_crypto.encrypt_aes128+dbms_crypto.chain_ecb+dbms_crypto.pad_pkcs5 ;
my_str_raw := dbms_crypto.decrypt(src => my_str_raw , typ => my_type, key => my_key_raw ) ;
my_return_str := utl_i18n.raw_to_char(my_str_raw,'utf8');
return my_return_str ;

end;

使用例子:
加密
select my_encryption(待加密内容,你的key) from dual;
解密
select my_decryption(待解密内容,你的key) from dual;

相关文章
|
6月前
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
在YMP校验过程中,从yashandb同步至Oracle的数据出现timestamp(0)字段不一致问题。原因是yashandb的timestamp(x)存储为固定6位小数,而Oracle的timestamp(0)无小数位,同步时会截断yashandb的6位小数,导致数据差异。受影响版本:yashandb 23.2.7.101、YMP 23.3.1.3、YDS联调版本。此问题会导致YMP校验数据内容不一致。
|
7月前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有 YashanDB 版本。原因是操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常源于 system() 函数调用失败,返回 -1,通常是因为 fork() 失败。未来 YashanDB 将优化日志信息以更好地诊断类似问题。
|
3月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
311 5
|
5月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1154 28
|
6月前
|
Oracle 关系型数据库 Java
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
本文介绍通过Flink CDC实现Oracle数据实时同步至崖山数据库(YashanDB)的方法,支持全量与增量同步,并涵盖新增、修改和删除的DML操作。内容包括环境准备(如JDK、Flink版本等)、Oracle日志归档启用、用户权限配置、增量日志记录设置、元数据迁移、Flink安装与配置、生成Flink SQL文件、Streampark部署,以及创建和启动实时同步任务的具体步骤。适合需要跨数据库实时同步方案的技术人员参考。
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
|
6月前
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
|
6月前
|
存储 网络安全 数据库
YashanDB加密方法
YashanDB加密方法
|
6月前
|
SQL 存储 Oracle
【YashanDB知识库】对比Oracle和YashanDB对象不一致的方法
本文来自YashanDB官网,介绍从Oracle迁移到YashanDB后的数据校验方法。通过YMP工具迁移数据后,可使用其内置校验功能,或采用本文提供的复杂对比思路:将Oracle的DBA_*数据字典视图保存为用户表,借助YMP同步至YashanDB,再利用SQL查询两数据库间的差异。具体包括视图、存储过程、索引和约束等对象的对比方法,提供详细SQL示例以供参考和修改。
|
6月前
|
Oracle 关系型数据库 Linux
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常
|
7月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
771 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡

推荐镜像

更多