gpt4 book ai didi

python - Oracle/Python 转换为字符串 -> HEX(对于 RAW 列) -> varchar2

转载 作者:行者123 更新时间:2023-12-01 06:19:59 25 4
gpt4 key购买 nike

我有一个带有 RAW 列的表,用于保存加密字符串。

我有用于从纯文本加密到此字段的 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;

更新

使用 Base64 的建议对我有用

Python:

name_enc = base64.b64encode('some text')

PL/SQL:

v_name := utl_raw.cast_to_varchar2(UTL_ENCODE.BASE64_DECODE(:new.name_enc));

最佳答案

必须编码为十六进制吗?

我认为有一个包( utl_encode )可用于 PL/SQL 解码 Base64 例如,你可以使用它吗?

关于python - Oracle/Python 转换为字符串 -> HEX(对于 RAW 列) -> varchar2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/772518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com