是否可以通過混淆/混洗數據列中的字符來在Oracle數據庫中執行數據屏蔽?通過混淆Oracle數據庫中的字符進行數據屏蔽
SELECT 'abcd' as "Normal Text" from dual;
SELECT 'badc' as "Masked Text" from dual; --expected
我不介意使用多個RPAD和LPAD,但這會過於複雜。 有沒有更簡單的解決方案呢?
是否可以通過混淆/混洗數據列中的字符來在Oracle數據庫中執行數據屏蔽?通過混淆Oracle數據庫中的字符進行數據屏蔽
SELECT 'abcd' as "Normal Text" from dual;
SELECT 'badc' as "Masked Text" from dual; --expected
我不介意使用多個RPAD和LPAD,但這會過於複雜。 有沒有更簡單的解決方案呢?
整整自己(即交換奇數和偶數字符poitions)表示,這一結果可以使用:
select regexp_replace(text, '(.)(.)', '\2\1') as masked_text
from (select 'abcd' as text from dual);
由於固定模式,它會很容易達到原來的價值,這是數據掩蓋目的失敗。否則它是一個很好的解 –
是,數據屏蔽在Oracle支持。開箱即用,它支持屏蔽某些類型的數據(如SSN,信用卡號碼,電話號碼),並且它還具有生成隨機日期或字符串等功能。沒有用於在給定文本中洗牌字符的內置例程,但您可以隨時查看其他兩個選項(跨行移動數據或從另一個表中選取隨機數據)以實現輕鬆實現。
如果您的需要是在字符串中進行混洗,您將不得不編寫自己的屏蔽功能並使用它們。 This線程給你算法實現相同。在甲骨文
掩蓋支持
數據
各個環節都有一個疑問。你是否想使用plsql將列中的記錄混淆,然後再進行數據屏蔽?你希望我們提供一個查詢來混雜/拼湊單詞? –
數據屏蔽有許多因素,其中一些是互斥的。你需要哪些:1)加密安全的輸出,沒有人可以打破,2)與輸入尺寸完全相同的輸出,3)確定性函數(相同的輸入總是返回相同的輸出),4)不需要預先計算的表格。 –
您可以使用'translate(your_column,'一些字符','混亂的字符')'使文本不可讀。 –