微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oracle – PL / SQL中是否有散列函数?

我在PL / sql中寻找一个哈希函数获取一个varchar的哈希值.我在Oracle 10中发现一个名为dbms_crypto的包,其中包含一个函数dbms_crypto.hash,甚至其他包dbms_sqlhash.getHash,但是在我打电话给他们的时候,我有一个消息,因为它找不到它们…

有人知道我怎么称呼他们?还有其他包装吗?

这是我的代码

DECLARE
 l_textToHash VARCHAR2(19) := 'toto123';
 l_ccn_raw RAW(128) := utl_raw.cast_to_raw(l_textToHash);
 l_encrypted_raw RAW(2048);
BEGIN
  dbms_output.put_line('CC:  ' || l_ccn_raw);
  l_encrypted_raw := dbms_crypto.hash(l_ccn_raw,3);
  dbms_output.put_line('SH1: ' || l_encrypted_raw);
END;
/

这是消息

Error starting at line 1 in command:
DECLARE
 l_textToHash VARCHAR2(19) := 'toto123';
 l_ccn_raw RAW(128) := utl_raw.cast_to_raw(l_textToHash);
 l_encrypted_raw RAW(2048);
BEGIN
  dbms_output.put_line('CC:  ' || l_ccn_raw);
  l_encrypted_raw := dbms_crypto.hash(l_ccn_raw,3);
  dbms_output.put_line('SH1: ' || l_encrypted_raw);
END;
Error report:
ORA-06550: line 7,column 22:
PLS-00201: identifier 'DBMS_CRYPTO' must be declared
ORA-06550: line 7,column 3:
PL/sql: Statement ignored
06550. 00000 -  "line %s,column %s:\n%s"
*Cause:    Usually a PL/sql compilation error.
*Action:

谢谢!

确保您具有与您连接的用户授予的适当权限.与您的DBA通信以在SYS.DBMS_CRYPTO包上添加执行权限.

Oracle提供了一个很好的guide,使用oracle数据库处理哈希和加密数据.

如果您是旧版本的数据库不支持DBMS_CRYPTO,您还可以尝试DBMS_OBFUSCATION_TOOLKIT.

在Oracle 12c中,您可以使用功能STANDARD_HASH.

原文地址:https://www.jb51.cc/oracle/205474.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐