我有一个表,其原始列用于保存加密字符串。在
我有从纯文本加密到这个字段的PL/SQL代码。在
我想创建一个包含加密代码的触发器。在
我希望“滥用”原始字段来将纯文本传递到触发器中。(我无法修改架构,例如为纯文本字段添加另一列)
插入数据的客户机是Python(cx_Oracle)。在
我的问题是如何最好地将python字符串转换成HEX,然后在触发器中转换回VARCHAR2,这样就可以不用修改加密代码(加密代码需要VARCHAR2)。在
下面是一个例子:create table BOB (name_enc raw(16));
在python中。这是我在编码方面的初步尝试,我想我需要更便携的国际字符集。在
^{pr2}$
扳机create or replace trigger enc_bob before insert on BOB
for each row
DECLARE
v_name varchar2(50);
BEGIN
v_name := :new.name_enc;
--
-- encryption code that expects v_name to contain string
END;
更新
使用Base64的建议对我很有效
Python:name_enc = base64.b64encode('some text')
PL/SQL:v_name := utl_raw.cast_to_varchar2(UTL_ENCODE.BASE64_DECODE(:new.name_enc));