如果您的要求如您所说的那么简单,那么您可以使用该UTL_RAW.CAST_TO_RAW
功能:
INSERT INTO TABLE_NAME (LOGIN_PWD)
VALUES (UTL_RAW.CAST_TO_RAW('hashed password'));
SQL 小提琴演示。
例如,使用 Md5 散列的纯字符串“散列密码”,即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
:
从表名中选择 UTL_RAW.CAST_TO_VARCHAR2(LOGIN_PWD);
UTL_RAW.CAST_TO_VARCHAR2(LOGIN_PWD)
-----------------------------------
6a25a2b265d917ea91447daa81b2506d