Oracle 和 tomcat md5 哈希之间的差异?

发布于 2024-09-16 06:06:54 字数 650 浏览 7 评论 0原文

当使用oracle forms生成md5散列时,我得到的结果与tomcat给出的结果不同。

当使用 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; 

为什么他们没有给出相同的结果?我的代码有问题吗?

when using oracle forms to generate md5 hash, i get result that is different from the result given by tomcat.

when using tomcat digest, i get:

C:\apache-tomcat-6.0.26\bin>digest -a md5 mypass
mypass:a029d0df84eb5549c641e04a9ef389e5

while using oracle forms, i get:

a029d0dfbfeb5549c641e04abff3bfe5

this is the code:

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; 

why aren't they giving the same result ? is there something wrong with my code ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

放低过去 2024-09-23 06:06:54

您运行的是哪个版本的 Oracle?您的代码在 10.2.0.3.0 上给出了很好的答案:

SQL> VARIABLE res VARCHAR2(32);
SQL> Declare
  2      v_checksum varchar2( 32 );
  3      v_hex_value varchar2( 32 );
  4  begin
  5      v_checksum:=SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(input_string=>'mypass');
  6  
  7  
  8      SELECT  LOWER( RAWTOHEX( v_checksum ) )
  9      INTO    v_hex_value
 10      FROM    dual;
 11  
 12      :res := v_hex_value;
 13  end;
 14  /

PL/SQL procedure successfully completed
res
---------
a029d0df84eb5549c641e04a9ef389e5

我还尝试了其他 MD5 函数,它们给出了相同的答案:

SQL> DECLARE
  2     l_input RAW(16) := utl_raw.cast_to_raw('mypass');
  3  BEGIN
  4     :res:=lower(rawtohex(dbms_obfuscation_toolkit.md5(input=>l_input)));
  5  END;
  6  /

PL/SQL procedure successfully completed
res
---------
a029d0df84eb5549c641e04a9ef389e5

which version of Oracle are you running ? Your code gives the good answer on 10.2.0.3.0:

SQL> VARIABLE res VARCHAR2(32);
SQL> Declare
  2      v_checksum varchar2( 32 );
  3      v_hex_value varchar2( 32 );
  4  begin
  5      v_checksum:=SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(input_string=>'mypass');
  6  
  7  
  8      SELECT  LOWER( RAWTOHEX( v_checksum ) )
  9      INTO    v_hex_value
 10      FROM    dual;
 11  
 12      :res := v_hex_value;
 13  end;
 14  /

PL/SQL procedure successfully completed
res
---------
a029d0df84eb5549c641e04a9ef389e5

Also I tried the other MD5 functions and they give the same answer:

SQL> DECLARE
  2     l_input RAW(16) := utl_raw.cast_to_raw('mypass');
  3  BEGIN
  4     :res:=lower(rawtohex(dbms_obfuscation_toolkit.md5(input=>l_input)));
  5  END;
  6  /

PL/SQL procedure successfully completed
res
---------
a029d0df84eb5549c641e04a9ef389e5
苄①跕圉湢 2024-09-23 06:06:54

你的代码似乎是正确的

我也在这里得到a029d0df84eb5549c641e04a9ef389e5 http://md5hashgenerator.com/index.php

在 sql server 中我得到同样的结果

SELECT CONVERT(VARCHAR(32),HashBytes('MD5', 'mypass'),2)

Your code seems correct

I also get a029d0df84eb5549c641e04a9ef389e5 here http://md5hashgenerator.com/index.php

and also in sql server I get the same

SELECT CONVERT(VARCHAR(32),HashBytes('MD5', 'mypass'),2)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文