有没有办法使用 Oracles DBMS_CRYPTO PL/SQL 包来创建与 apache 的 htpasswd 兼容的密码?因此,在 PL/SQL 包中,我创建了一个散列密码,稍后将其存储在 .htpasswd 文件中时,它可以正常工作。
我们目前在 unix 中使用命令 htpasswd -n -b -d 执行此操作。但是,我们希望创建它们并将它们保存在 Oracle 表中。然后在需要时检索它们以创建 .htpasswd 文件。
谢谢!
乔
有没有办法使用 Oracles DBMS_CRYPTO PL/SQL 包来创建与 apache 的 htpasswd 兼容的密码?因此,在 PL/SQL 包中,我创建了一个散列密码,稍后将其存储在 .htpasswd 文件中时,它可以正常工作。
我们目前在 unix 中使用命令 htpasswd -n -b -d 执行此操作。但是,我们希望创建它们并将它们保存在 Oracle 表中。然后在需要时检索它们以创建 .htpasswd 文件。
谢谢!
乔
该htpasswd
工具能够生成一些散列密码类型。您正在使用使用史前哈希格式 的-d
标志。哈希非常不安全,而且非常容易破解。 crypt()
crypt()
根据Oracle 10g 的这个手册页,该DBMS_CRYPTO
软件包不支持crypt()
。这并不奇怪。
您将需要切换到不同的散列算法才能实现这一目标。最直接的方法相当于使用-s
标志而不是-d
标志来创建 SHA1 密码。在命令行上试试看结果。给出的密码格式是文字 string {SHA}
,后跟 base64 编码的 SHA1 哈希,没有加盐。该DBMS_CRYPTO
软件包似乎支持 SHA1,并暗示还有一个函数可以进行 base64 编码。或者,如果您自己生成 .htpasswd 文件,您可以简单地以您喜欢的任何方式存储哈希,并使用您选择的语言将其转换为输出。