2010-05-26 78 views
8

我有使用转换base64'd SHA1哈希为十六进制哈希

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

我需要把这些转换成这将是相当于生成的密码的MySQL中的列表

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

由于这些是我们的邮件系统使用的密码,我们想要转换为另一个邮件系统(但要求它是40字符的十六进制哈希:(

我将如何从一种格式转换为另一种(我PRET虽然我找不到代码!)

作为一个说明,我提到数据是在MySQL中 - 这是无关紧要的 - 我知道如何获得数据,只是不转换它。

哈希是相同的 - 我只是试图将信息打包的方式(我认为这只是需要从BASE64至base16转换,但是这只是一个猜测!)

回答

16
$binary = base64_decode(substr($hash, 5)); 
$hex = bin2hex($binary); 
+2

堆栈溢出 - 当你有一个大脑放屁的地方! - 欢呼声......当它让我接受时,我会接受 – Mez 2010-05-26 15:54:48

+0

先生,**世界上没有足够的赞扬**来感谢你** ...... – xDaizu 2016-03-01 13:04:02

-3

base64_decode()可以转换在base64_encode手册条目中找到。
而且我相信他们有办法将原始格式转换的SHA1手工录入的意见,如果是太难为你自己编写

+0

我不转换哈希,就是这个样子的散列包装。 – Mez 2010-05-26 15:46:15

+0

是啊,我读得太快了 – 2010-05-26 15:49:59