當使用oracle形式生成md5散列時,我得到的結果與tomcat給出的結果不同。Oracle和tomcat md5哈希之間的區別?
使用Tomcat消化的時候,我得到:
C:\apache-tomcat-6.0.26\bin>digest -a md5 mypass
mypass:a029d0df84eb5549c641e04a9ef389e5
同時使用Oracle的形式,我得到:
a029d0dfbfeb5549c641e04abff3bfe5
這是代碼:
Declare
v_checksum varchar2(32);
v_hex_value varchar2(32);
begin
v_checksum := SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => 'mypass');
SELECT LOWER(RAWTOHEX(v_checksum))
INTO v_hex_value
FROM dual;
:res := v_hex_value;
end;
他們爲什麼不給出相同的結果?我的代碼有什麼問題嗎?
FWIW我在C#中測試同意tomcat的。爲突出顯示差異,Oracle用相同的值(0xbf)替換了三個字節(0x84,9e,89)。乍一看,在你的哈希0x80-0x9f範圍內沒有其他字節。 – Rup 2010-08-26 11:29:28
有無論如何你可以追蹤'v_checksum'?如果這是錯誤的,那麼問題出在MD5調用中,但值得確保錯誤是由某種轉換步驟觸發的。 – Rup 2010-08-26 11:39:17