将base64编码的SHA1哈希值转换为十六进制哈希值

9

我有一个MySQL密码列表,这些密码是使用

$hash = '{SHA}' . base64_encode(sha1('some string here', true));

我需要将这些转换成相当于什么的等效物

$hash = sha1('some string here');

由于这些密码是我们邮件系统使用的,我们想要转换到另一个邮件系统(但需要它是40个字符的十六进制哈希值 :(
我该如何从一种格式转换为另一种格式(我非常确定我以前做过这个,但是另一种方式,尽管我找不到代码!)
请注意,我提到数据在MySQL中 - 这与此无关 - 我知道如何获取数据,只是不知道如何转换它。
哈希值相同 - 我只是试图转换信息的打包方式(我认为这只需要从base64转换为base16,但这只是一个猜测!)
2个回答

18
$binary = base64_decode(substr($hash, 5));
$hex = bin2hex($binary);

-3

嗯,base64_decode()可以在base64_encode手册条目中找到。
而且我相信他们在sha1手册条目的评论中有一种将原始格式转换的方法,如果你自己写太难了。


我不是在转换哈希值,而是在改变哈希值的打包方式。 - Mez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接