Oracle 数据库中的内容加密与解密
说起来Oracle中有很多涉及加密解密的东西,今天说的这个是dbms_crypto。
有没有遇到过这样的应用场景,需要将一些敏感数据字段脱敏之后发送给下游。之后下游处理完其他数据之后会携带这个脱敏字段再发回给你,你再用这些敏感信息还原出原始的值匹配更新原来的数据。最近我就遇到了。
找了一下,Oracle还真有类似的包:dbms_crypto,使用这个包需要管理员登录SYS给你授权才行。
其实脱敏本身很简单,hash一下等等乱七八糟的输出一下就可以了,不过脱敏后的数据要想再恢复就要有些技巧了。dbms_crypto包里介绍了一些可以双向转换的算法,具体可以根据业务需要以及加密安全等级来权衡加解密的方式。
无论什么算法加密,基本的东西就是 原文+密钥+算法=密文, 密文+密钥+算法=原文。加解密都是一个人的话密钥别弄丢了基本也就安全了。加解密不是同一个人并且懂算法朋友也许会有不同的选择。不过这个基本符合我的需求了。
下面是代码包:
- get_public_key 用来生成加密的32位密钥
- encrypt_data 用来生成加密的密文,需要传入密钥以及原文文本
- decrypt_data 用来生成解密的原文,需要传入密钥以及加密密文
CREATE OR RE