如何调用Oracle MD5哈希函数?

use*_*806 9 sql oracle plsql oracle11g

我有以下代码.我正在使用Oracle 11g.

SELECT DBMS_OBFUSCATION_TOOLKIT.md5 (input => UTL_RAW.cast_to_raw(
  FIRST_NAME
  ||LAST_NAME
  )) md5_key ,
  FIRST_NAME ,
  LAST_NAME
FROM C_NAME_TAB
WHERE PKEY='1234'
Run Code Online (Sandbox Code Playgroud)

我怎么称这个代码?我可以直接在sqldeveloper中执行此代码吗?

tbo*_*one 28

在Oracle 12c中,您可以使用STANDARD_HASH函数.它不需要任何其他权限.

select standard_hash('foo', 'MD5') from dual;
Run Code Online (Sandbox Code Playgroud)

不推荐使用dbms_obfuscation_toolkit(请参阅此处的注释).您可以直接使用DBMS_CRYPTO:

select rawtohex(
    DBMS_CRYPTO.Hash (
        UTL_I18N.STRING_TO_RAW ('foo', 'AL32UTF8'),
        2)
    ) from dual;
Run Code Online (Sandbox Code Playgroud)

输出:

ACBD18DB4CC2F85CEDEF654FCCC4A4D8
Run Code Online (Sandbox Code Playgroud)

如果需要,添加较低的函数调用.有关DBMS_CRYPTO的更多信息.

  • @ZerOne不,它是单向哈希.有关更多信息,请参见[此处](http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_crypto.htm#i1003350) (2认同)

小智 5

我会做:

select DBMS_CRYPTO.HASH(rawtohex('foo') ,2) from dual;
Run Code Online (Sandbox Code Playgroud)

输出:

DBMS_CRYPTO.HASH(RAWTOHEX('FOO'),2)
--------------------------------------------------------------------------------
ACBD18DB4CC2F85CEDEF654FCCC4A4D8
Run Code Online (Sandbox Code Playgroud)