Oracle-データの暗号化、脱感作のエクスポート機能

データの暗号化は、あなたが完全な脱感作にカスタム関数を使用する必要があります。

後者は、関数変換データ値を使用して、新しいテーブルが格納されています。

/ * 暗号化機能* /
CREATE OR REPLACE FUNCTIONのDS_FUNC_ENCRYPT_DESを(P_TEXT VARCHAR2、
                                               P_KEY VARCHAR2)
  RETURN VARCHAR2 IS
  V_TEXT VARCHAR2(4000 )。
  W_ENC VARCHAR2(4000 )。
  RAW_INPUT RAW(20000 )。
  KEY_INPUT RAW(1000年)。
  DECRYPTED_RAW RAW(20000 )。
  V_ERRORTEXT VARCHAR2(500 )。
ベギン

  DBMS_OUTPUT.ENABLE(BUFFER_SIZE => NULL);

  (P_TEXT IS NULL OR P_TEXT IF = '' THEN)
    RETURN '' ;
  END IF;
  DBMS_OUTPUT.PUT_LINE(P_TEXT)。
  V_TEXT: = RPAD(P_TEXT、(TRUNC(LENGTHB(P_TEXT)/ 8)+ 1)* 8、CHR(0 ))。
  DBMS_OUTPUT.PUT_LINE(V_TEXT)。
  RAW_INPUT: = UTL_I18N.STRING_TO_RAW(V_TEXT、' ZHS16GBK ' )。
  KEY_INPUT: = UTL_I18N.STRING_TO_RAW(P_KEY、' ZHS16GBK ' )。
  DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT(INPUT           => RAW_INPUT、
                                      KEY             => KEY_INPUT、
                                      ENCRYPTED_DATA => DECRYPTED_RAW)。
  V_ENC: = RAWTOHEX(DECRYPTED_RAW)。
  DBMS_OUTPUT.PUT_LINE(V_ENC)。
  RETURN V_ENC;
例外
  WHEN OTHERS THEN
    V_ERRORTEXT: = ' dserror:' || SUBSTR(SQLERRM、1200 )。
    RETURN V_ERRORTEXT;
終わり;

SELECT DS_FUNC_ENCRYPT_DES TABLE_NAME FROM( 'フィールド名'、 '暗号化された文字');

第二に、ダンプを復号化されたエクスポートデータへのエクスポート]コマンドを使用します。

/ * 復号化機能* /
CREATE OR REPLACE FUNCTIONのDS_FUNC_DECRYPT_DESを(P_TEXT VARCHAR2、
                                               P_KEY VARCHAR2)
  RETURN VARCHAR2 IS
  P_TEXT_RAW RAW(20000 )。
  P_KEY_RAW RAW(20000 )。
  V_TEXT_RAW RAW(20000 )。
  V_TEXT VARCHAR2(4000 )。
  V_ERRORTEXT VARCHAR2(500 )。
ベギン
  
  DBMS_OUTPUT.ENABLE(BUFFER_SIZE => NULL);
  
  (P_TEXT IS NULL OR P_TEXT IF = '' THEN)
    RETURN '' ;
  END IF;
  P_TEXT_RAW: = HEXTORAW(P_TEXT)。
  P_KEY_RAW: = UTL_I18N.STRING_TO_RAW(P_KEY、' ZHS16GBK ' )。
  DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT(INPUT           => P_TEXT_RAW、
                                      KEY             => P_KEY_RAW、
                                      DECRYPTED_DATA => V_TEXT_RAW)。
  V_TEXT: = UTL_I18N.RAW_TO_CHAR(V_TEXT_RAW、' ZHS16GBK ' )。
  DBMS_OUTPUT.PUT_LINE(V_TEXT)。
  RETURN RTRIM(V_TEXT、CHR(0 ))。
例外
  WHEN OTHERS THEN
    V_ERRORTEXT: = ' dserror:' || SUBSTR(SQLERRM、1200 )。
    RETURN V_ERRORTEXT;
終わり;

SELECT DS_FUNC_DECRYPT_DES TABLE_NAME FROM( 'フィールド名'、 '暗号化された文字');

おすすめ

転載: www.cnblogs.com/yangjn/p/12416757.html