Oracle 的 dbms_utility.get_hash_value 算法是否记录在任何地方进行逆向工程?

Thi*_*ter 5 oracle authentication

我正在使用一个现有的数据库,其中的密码是这样散列的:

DBMS_UTILITY.GET_HASH_VALUE(the_username || the_password, 1000000000, 1073741824)
Run Code Online (Sandbox Code Playgroud)

我知道由于各种原因这很糟糕(不是正确的加密安全哈希,并且 oracle 使用的算法可能会在版本之间发生变化)。但是该数据库存在,我们不太可能让他们改变这一点,因为他们有很多用户,并且不能简单地切换到正确的散列算法而不让每个人重新输入或重置密码。

现在我需要使用这个数据库进行 LDAP 身份验证(基于 OpenLDAP)。不幸的是,没有办法让 OpenLDAP 将明文密码传递给数据库(然后我可以简单地在明文密码上调用散列函数)。但是,修改 LDAP 客户端是可能的,所以如果我可以创建哈希,一切都会好起来的。

我宁愿避免连接到 Oracle 数据库来执行此操作,因为这也需要该机器上的 Oracle 客户端、数据库登录数据等。因此我想知道是否有关于GET_HASH_VALUE()可用算法的任何信息。我在谷歌上找不到任何东西,但也许它隐藏在所有有些不相关的结果之间......如果算法最近发生了变化,服务器版本是 11.2.0.3.0。

小智 1

您无法反转 DBMS_UTILITY.GET_HASH_VALUE。这是不可能的。

您的问题有所不同:您必须识别认为符合 LDAP 目录(如 OpenLDAP)的用户。在 Oracle 文档中查找 Enterprise Users 或 LDAP 身份验证,您将找到所需的一切...