在PERL中将SHA1十六进制转换为base64编码(对于Apache htpasswd)
我有一个
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上 这是真正的问题.我实际上需要它在PERL中转换,最好只使用标准的内置模块来保持一切简单.我不确定为什么他们在这一步中使用perl,但是我正在尝试编辑一个更大的应用程序的一小部分,并且不想改变整个事情:) 为了清楚起见,我不是试图将十六进制数转换为二进制数.这是二进制值的十六进制表示,存储在perl“string”中:) 提前致谢, 解决方法
你解释了这么多,但仍然不确定你想要什么:/
如果您想要的是从十六进制字符串转换为blob到base64字符串,这就是您在问题的顶部段落中所说的内容, use MIME::Base64; my $bin = pack "H*",$hex_str; my $encoded = encode_base64($bin); 它与你想要的完全匹配:base64_encode(sha1($password,true)) 忽略我以前的答案和编辑. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |