我有一个专栏:
LOGIN_PWD -> RAW(256 BYTE)
我必须使用插入查询将散列密码字符串插入此列。
INSERT INTO TABLE_NAME (LOGIN_PWD) VALUES (convert.toBytes('hashed password'));
我使用java程序通过在我的本地机器上使用string.getBytes()方法来完成此操作,但对于其他env,我不能使用相同的程序,需要使用query来完成此操作
vsnjm48y1#
如果您的要求像您所说的那样简单,那么您可以使用UTL_RAW.CAST_TO_RAW函数:
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,存储在表中的原始值为:
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:
getBytes()
UTL_RAW.CAST_TO_VARCHAR2
SELECT UTL_RAW.CAST_TO_VARCHAR2(LOGIN_PWD) FROM TABLE_NAME; UTL_RAW.CAST_TO_VARCHAR2(LOGIN_PWD) ----------------------------------- 6a25a2b265d917ea91447daa81b2506d
1条答案
按热度按时间vsnjm48y1#
如果您的要求像您所说的那样简单,那么您可以使用
UTL_RAW.CAST_TO_RAW
函数:SQL Fiddle演示。
例如,对于使用Md5散列的普通字符串“hashed password”,即
6a25a2b265d917ea91447daa81b2506d
,存储在表中的原始值为:这与我从
getBytes()
得到的Java中相同的哈希值相匹配。如果出于某种原因需要将其恢复为文本,可以使用
UTL_RAW.CAST_TO_VARCHAR2
: