我有一个 PHP 应用程序,它的密码存储在数据库中作为 sha1($password) 的输出,这显然是二进制 SHA1 哈希的十六进制表示。(据我了解)
我想将其转换为与 Apache .htpassword 文件兼容的格式,它需要是 base64 编码的二进制值或 base64_encode(sha1($password, true)) 的输出。
我发现了这个线程:Convert base64'd SHA1 hashes to Hex hashes ...这与我需要做的相反,而且效果很好。我尝试更改命令的顺序并使用 hex2bin 而不是 bin2hex,但这不起作用:
致命错误:在第 1 行的 php shell 代码中调用未定义函数 hex2bin()
显然,直到 PHP 5.4 才可用,并且该服务器仍在 5.3.x http://php.net/manual/en/function.hex2bin.php
这是真正的问题。我实际上需要它在 PERL 中进行转换,最好只使用标准的内置模块来保持一切简单。我不确定他们为什么在这一步中使用 perl,但我正在尝试编辑一个较大的应用程序的一小部分,并且不想改变整个事情:)
需要明确的是,我并不是想将十六进制数转换为二进制数。这是二进制值的十六进制表示,存储在 perl“字符串”中:)
在此先感谢,汤米