暗号化された文字列を保持するためのRAW列を持つ表があります。Oracle/Python文字列への変換 - > HEX(RAW列用) - > varchar2
プレーンテキストからこのフィールドに暗号化するためのPL/SQLコードがあります。
私は、暗号化コードを含むトリガーを作成したいと考えています。
私はRAWフィールドを誤用してプレーンテキストをトリガーに渡したいと考えています。 (スキーマを変更することはできません。たとえば、プレーンテキストフィールドに別の列を追加するなど)
クライアントを挿入するクライアントはPython(cx_Oracle)です。
私の質問は、暗号化コードを変更せずに使用できるように(暗号化コードはVARCHAR2が必要です)、Python文字列をHEXに変換してからVARCHAR2に戻す方法です。 Pythonで
create table BOB (name_enc raw(16));
:
は、ここでの例です。これが私の最初のエンコードの試みですが、私は国際的な文字セットのために移植性の高いものが必要になると考えています。
name_enc = 'some text'.encode('hex')
トリガー
create or replace trigger enc_bob before insert on BOB
for each row
DECLARE
v_name varchar2(50);
BEGIN
v_name := :new.name_enc; <---- WHAT DO I NEED HERE TO CONVERT FROM HEX to VARCHAR?
--
-- encryption code that expects v_name to contain string
END;
UPDATE
のBase64を使用するための提案が私のためパイソン働い
:
name_enc = base64.b64encode('some text')
PL/SQL:
v_name := utl_raw.cast_to_varchar2(UTL_ENCODE.BASE64_DECODE(:new.name_enc));
ありがとう、これは私のために働いた。上記のコードを参照してください。 – GHZ