首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle / Python转换为字符串-> HEX (用于原始列) -> varchar2

Oracle / Python转换为字符串-> HEX (用于原始列) -> varchar2
EN

Stack Overflow用户
提问于 2009-04-21 13:12:06
回答 1查看 4.3K关注 0票数 1

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

我有PL/SQL代码,用于将纯文本加密到这个字段。

我希望创建一个包含加密代码的触发器。

我希望“滥用”原始字段将纯文本传递到触发器中。(我无法修改模式,例如,为纯文本字段添加另一列)

插入数据的客户机是Python (cx_Oracle)。

我的问题是,如何最好地将python字符串转换为HEX,然后在触发器中返回到VARCHAR2,以便无需修改就可以使用加密代码(加密代码需要VARCHAR2)。

下面是一个例子:

代码语言:javascript
复制
create table BOB (name_enc raw(16));

在蟒蛇里。这是我最初的编码尝试,我想我需要一些更适合国际字符集的便携工具。

代码语言:javascript
复制
name_enc = 'some text'.encode('hex')

扳机

代码语言:javascript
复制
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:

代码语言:javascript
复制
name_enc = base64.b64encode('some text')

PL/SQL:

代码语言:javascript
复制
v_name := utl_raw.cast_to_varchar2(UTL_ENCODE.BASE64_DECODE(:new.name_enc));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-04-21 13:34:03

你必须要编码为十六进制吗?

我认为有一个软件包(编码,编码)可供PL/SQL解码Base64 --例如,您可以使用它吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/772518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档