2010-05-26 79 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