1

有没有办法使用 Oracles DBMS_CRYPTO PL/SQL 包来创建与 apache 的 htpasswd 兼容的密码?因此,在 PL/SQL 包中,我创建了一个散列密码,稍后将其存储在 .htpasswd 文件中时,它可以正常工作。

我们目前在 unix 中使用命令 htpasswd -n -b -d 执行此操作。但是,我们希望创建它们并将它们保存在 Oracle 表中。然后在需要时检索它们以创建 .htpasswd 文件。

谢谢!

4

1 回答 1

1

htpasswd工具能够生成一些散列密码类型。您正在使用使用史前哈希格式 的-d标志。哈希非常不安全,而且非常容易破解。 crypt()crypt()

根据Oracle 10g 的这个手册页,该DBMS_CRYPTO软件包支持crypt()。这并不奇怪。

您将需要切换到不同的散列算法才能实现这一目标。最直接的方法相当于使用-s标志而不是-d标志来创建 SHA1 密码。在命令行上试试看结果。给出的密码格式是文字 string {SHA},后跟 base64 编码的 SHA1 哈希,没有加盐。该DBMS_CRYPTO软件包似乎支持 SHA1,并暗示还有一个函数可以进行 base64 编码。或者,如果您自己生成 .htpasswd 文件,您可以简单地以您喜欢的任何方式存储哈希,并使用您选择的语言将其转换为输出。

于 2012-07-06T15:57:17.890 回答