加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在PERL中将SHA1十六进制转换为base64编码(对于Apache htpasswd)

发布时间:2020-12-16 06:22:52 所属栏目:大数据 来源:网络整理
导读:我有一个 PHP应用程序,其密码存储在数据库中作为sha1($password)的输出,这显然是二进制SHA1哈希的十六进制表示. (据我所知) 我想将其转换为兼容Apache .htpassword文件的格式,它需要是base64编码的二进制值或base64_encode的输出(sha1($password,true)). 我
我有一个 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“string”中:)

提前致谢,
汤米

解决方法

你解释了这么多,但仍然不确定你想要什么:/

如果您想要的是从十六进制字符串转换为blob到base64字符串,这就是您在问题的顶部段落中所说的内容,

use MIME::Base64;
my $bin = pack "H*",$hex_str;
my $encoded = encode_base64($bin);

它与你想要的完全匹配:base64_encode(sha1($password,true))

忽略我以前的答案和编辑.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读