2009-04-21 29 views
1

暗号化された文字列を保持するための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)); 

答えて

2

あなたはHexにエンコードする必要がありますか?

PL/SQLでBase64をデコードするためのパッケージ(utl_encode)があると思いますが、それを使用できますか?

+0

ありがとう、これは私のために働いた。上記のコードを参照してください。 – GHZ

関連する問題