暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle Dbms_crypto.hash_sh256与openssl不匹配

askTom 2017-10-17
1454

问题描述

OM-

我需要在数据库内部和外部创建一个 (大) 哈希,以产生相同的结果。我正在阅读的所有内容都说SHA256将满足要求,但是我无法编写与Linux库相同答案的SQL。

即。

SQL> select DBMS_CRYPTO.HASH( UTL_I18N.STRING_TO_RAW( 'The Little Brown Fox', 'AL32UTF8' ), 4 /* DBMS_CRYPTO.HASH_SH256 */ ) from dual ;

DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW('THELITTLEBROWNFOX','AL32UTF8'),4/*DBMS_
--------------------------------------------------------------------------------
F3DAFB6DB9169798CED60C1DF1BA3D354D579594DF3963A2172C130A012DDA7A
复制


但是

$ echo 'The Little Brown Fox' | openssl dgst -sha
(stdin)= d7acd2042179ff8ac6c67ce667a27ca024e6a7f8
复制


我错过了什么?

谢谢,乔治


专家解答

好吧,第一个问题是您没有使用openssl哈希到SH256!

第二个是echo包含换行符。用-n抑制这个。或将其添加到您的SQL字符串的末尾。你应该看到同样的结果:

bash-4.1$  echo -n 'The Little Brown Fox' | openssl dgst -sha256
(stdin)= f3dafb6db9169798ced60c1df1ba3d354d579594df3963a2172c130a012dda7a
bash-4.1$  echo  'The Little Brown Fox' | openssl dgst -sha256
(stdin)= cd0585b84f5c1f83eb5c2537a7d6b8c24da46d68d1bc89fea60b6f914d2ad8ca
bash-4.1$ sqlplus chris/xxxxx

SQL*Plus: Release 12.1.0.2.0 Production on Tue Oct 17 08:57:00 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Last Successful login time: Tue Oct 17 2017 08:50:04 -07:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>  
SQL> select
  2    DBMS_CRYPTO.HASH( UTL_I18N.STRING_TO_RAW( 'The Little Brown Fox', 'AL32UTF8' ), 4 /* DBMS_CRYPTO.HASH_SH256 */ ) no_newline,
  3    DBMS_CRYPTO.HASH( UTL_I18N.STRING_TO_RAW( 'The Little Brown Fox' || chr(10), 'AL32UTF8' ), 4 /* DBMS_CRYPTO.HASH_SH256 */ ) with_newline
from dual
/  4    5

NO_NEWLINE
--------------------------------------------------------------------------------
WITH_NEWLINE
--------------------------------------------------------------------------------
F3DAFB6DB9169798CED60C1DF1BA3D354D579594DF3963A2172C130A012DDA7A
CD0585B84F5C1F83EB5C2537A7D6B8C24DA46D68D1BC89FEA60B6F914D2AD8CA
复制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论