Oracle数据base64加密简单方法

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 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;

相关文章
|
14天前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有 YashanDB 版本。原因是操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常源于 system() 函数调用失败,返回 -1,通常是因为 fork() 失败。未来 YashanDB 将优化日志信息以更好地诊断类似问题。
|
1月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
109 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
15天前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
某客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有版本。问题源于操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常原因为系统调用 fork() 失败。经验总结:优化日志记录,提供更多异常信息。
|
4月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的还原数据
Oracle数据库中的还原数据(也称为undo数据或撤销数据)存储在还原表空间中,主要用于支持查询的一致性读取、实现闪回技术和恢复失败的事务。文章通过示例详细介绍了还原数据的工作原理和应用场景。
【赵渝强老师】Oracle的还原数据
|
4月前
|
数据库 数据安全/隐私保护 Windows
Windows远程桌面出现CredSSP加密数据修正问题解决方案
【10月更文挑战第30天】本文介绍了两种解决Windows系统凭据分配问题的方法。方案一是通过组策略编辑器(gpedit.msc)启用“加密数据库修正”并将其保护级别设为“易受攻击”。方案二是通过注册表编辑器(regedit)在指定路径下创建或修改名为“AllowEncryptionOracle”的DWORD值,并将其数值设为2。
2982 3
|
4月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
86 7
|
4月前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:从漏洞到加密,保护数据的关键步骤
【10月更文挑战第24天】在数字化时代,网络安全和信息安全是维护个人隐私和企业资产的前线防线。本文将探讨网络安全中的常见漏洞、加密技术的重要性以及如何通过提高安全意识来防范潜在的网络威胁。我们将深入理解网络安全的基本概念,学习如何识别和应对安全威胁,并掌握保护信息不被非法访问的策略。无论你是IT专业人士还是日常互联网用户,这篇文章都将为你提供宝贵的知识和技能,帮助你在网络世界中更安全地航行。
|
5月前
|
存储 安全 Java
|
5月前
|
算法 安全 数据安全/隐私保护
链接加密的方法有哪些?
【10月更文挑战第6天】链接加密的方法有哪些?
570 10
|
4月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。

推荐镜像

更多