1
我有一個包含RAW列的表格用於保存加密字符串。Oracle/Python轉換爲字符串 - > HEX(用於RAW列) - > varchar2
我有用於從純文本加密到這個字段的PL/SQL代碼。
我希望創建一個包含加密代碼的觸發器。
我希望'濫用'RAW字段將純文本傳入觸發器。 (我無法修改架構,例如爲純文本字段添加另一列)
插入數據的客戶端是Python(cx_Oracle)。
我的問題是如何最好地從python字符串轉換成HEX,然後返回到觸發器中的VARCHAR2,以便可以不加修改地使用加密代碼(加密代碼需要VARCHAR2)。
下面是一個例子:
create table BOB (name_enc raw(16));
Python編寫的。這是我在編碼方面的第一次嘗試,我懷疑我需要一些更便於國際字符集的東西。
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編碼的建議爲我工作
的Python:
name_enc = base64.b64encode('some text')
PL/SQL:
v_name := utl_raw.cast_to_varchar2(UTL_ENCODE.BASE64_DECODE(:new.name_enc));
謝謝,這對我有用。見上面的代碼。 – GHZ 2009-04-21 14:00:28