需要oracle函数将字符串转换为字节数组

6l7fqoea  于 2022-12-03  发布在  Oracle
关注(0)|答案(1)|浏览(279)

我有一个专栏:

LOGIN_PWD  ->  RAW(256 BYTE)

我必须使用插入查询将散列密码字符串插入此列。

INSERT INTO TABLE_NAME (LOGIN_PWD) VALUES (convert.toBytes('hashed password'));

我使用java程序通过在我的本地机器上使用string.getBytes()方法来完成此操作,但对于其他env,我不能使用相同的程序,需要使用query来完成此操作

vsnjm48y

vsnjm48y1#

如果您的要求像您所说的那样简单,那么您可以使用UTL_RAW.CAST_TO_RAW函数:

INSERT INTO TABLE_NAME (LOGIN_PWD)
VALUES (UTL_RAW.CAST_TO_RAW('hashed password'));

SQL Fiddle演示。
例如,对于使用Md5散列的普通字符串“hashed password”,即6a25a2b265d917ea91447daa81b2506d,存储在表中的原始值为:

SELECT DUMP(LOGIN_PWD) FROM TABLE_NAME;

DUMP(LOGIN_PWD)
------------------------------------------------------------------------------------------------------------------
Typ=23 Len=32: 54,97,50,53,97,50,98,50,54,53,100,57,49,55,101,97,57,49,52,52,55,100,97,97,56,49,98,50,53,48,54,100

这与我从getBytes()得到的Java中相同的哈希值相匹配。
如果出于某种原因需要将其恢复为文本,可以使用UTL_RAW.CAST_TO_VARCHAR2

SELECT UTL_RAW.CAST_TO_VARCHAR2(LOGIN_PWD) FROM TABLE_NAME;

UTL_RAW.CAST_TO_VARCHAR2(LOGIN_PWD)
-----------------------------------
6a25a2b265d917ea91447daa81b2506d

相关问题