2017-01-03 102 views
2

是否可以通過混淆/混洗數據列中的字符來在Oracle數據庫中執行數據屏蔽?通過混淆Oracle數據庫中的字符進行數據屏蔽

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

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

我不介意使用多個RPAD和LPAD,但這會過於複雜。 有沒有更簡單的解決方案呢?

+0

數據

各個環節都有一個疑問。你是否想使用plsql將列中的記錄混淆,然後再進行數據屏蔽?你希望我們提供一個查詢來混雜/拼湊單詞? –

+0

數據屏蔽有許多因素,其中一些是互斥的。你需要哪些:1)加密安全的輸出,沒有人可以打破,2)與輸入尺寸完全相同的輸出,3)確定性函數(相同的輸入總是返回相同的輸出),4)不需要預先計算的表格。 –

+1

您可以使用'translate(your_column,'一些字符','混亂的字符')'使文本不可讀。 –

回答

0

整整自己(即交換奇數和偶數字符poitions)表示,這一結果可以使用:

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

由於固定模式,它會很容易達到原來的價值,這是數據掩蓋目的失敗。否則它是一個很好的解 –

1

是,數據屏蔽在Oracle支持。開箱即用,它支持屏蔽某些類型的數據(如SSN,信用卡號碼,電話號碼),並且它還具有生成隨機日期或字符串等功能。沒有用於在給定文本中洗牌字符的內置例程,但您可以隨時查看其他兩個選項(跨行移動數據或從另一個表中選取隨機數據)以實現輕鬆實現。

如果您的需要是在字符串中進行混洗,您將不得不編寫自己的屏蔽功能並使用它們。 This線程給你算法實現相同。在甲骨文

掩蓋支持