通过混淆Oracle DB中的字符来屏蔽数据

时间:2017-01-03 07:10:20

标签: sql oracle masking

是否可以通过混淆/混洗数据列中的字符来在Oracle DB中执行数据屏蔽?

SELECT 'abcd' as "Normal Text" from dual;

SELECT 'badc' as "Masked Text" from dual; --expected 

在我看来,我可以考虑探索多个RPAD和LPAD的使用,但这会过于复杂。 有没有更简单的解决方案呢?

2 个答案:

答案 0 :(得分:1)

是的,Oracle支持数据屏蔽。开箱即用它支持屏蔽某些类型的数据(如SSN,信用卡号码,电话号码),并且还具有生成随机日期或字符串等的能力。在给定文本中没有用于改组字符的内置例程,但是您可以随时查看其他2个选项(跨行拖拽数据或从另一个表中选择随机数据)以便于实施。

如果您需要在字符串中进行随机播放,则必须编写自己的屏蔽功能并使用它们。 This线程为您提供了实现相同的算法。

Oracle中数据屏蔽支持的其他链接

答案 1 :(得分:0)

对于您自己建议的结果(即交换奇数和偶数字符位置),您可以使用:

select regexp_replace(text, '(.)(.)', '\2\1') as masked_text
from (select 'abcd' as text from dual);