你可以在你輸入的字符串轉換爲RAW和傳遞中,在獲得原始值回:
select dbms_obfuscation_toolkit.md5(input =>
utl_i18n.string_to_raw(data => '[email protected]')) from dual;
0B38E5C219F8E40CADD2156ECBCB6942
或者傳遞一個字符串並將轉換結果輸出到RAW:
select utl_i18n.string_to_raw(data => dbms_obfuscation_toolkit.md5(
input_string => '[email protected]')) from dual;
0B38E5C219F8E40CADD2156ECBCB6942
您在評論中表示您使用的是10g,但如果您使用的是11g或更高版本,則應考慮轉而使用DBMS_CRYPTO,因爲現在不推薦使用DBMS_OBFUSCATION_TOOLKIT。你不能從普通SQL雖然使用它,因爲typ
參數是PLS_INTEGER,但作爲從塊的示例調用:
set serveroutput on
begin
dbms_output.put_line(dbms_crypto.hash(src => utl_i18n.string_to_raw(
data => '[email protected]'), typ => dbms_crypto.hash_md5));
end;
/
anonymous block completed
0B38E5C219F8E40CADD2156ECBCB6942
你也許想轉換到/自RAW。但是,你將如何存儲和使用這個值?並且您使用的是哪個版本的Oracle - 如果使用11g,則可以使用「DBMS_CRYPTO」,而現在這已被棄用。 – 2014-09-02 18:51:57
我使用的是oracle 10g。該功能不起作用。我想要散列給我的唯一標識符。 – hurricane 2014-09-02 19:02:40
好的,但您需要將其視爲RAW以查看十六進制值;所以你應該將其作爲RAW存儲/檢索。你知道散列並不是唯一的,對嗎? – 2014-09-02 19:05:39