2015-01-08 422 views
3

我有轉換字符串的問題,讓我們說:「TestPassword」到SHA1和base64。將字符串轉換爲SHA1和base64

一般根據該網站: http://www.online-convert.com/result/1f76972748a7d186198171e9a11e9493

我應該得到下面的結果上面的密碼:

hex: 6250625b226df62870ae23af8d3fac0760d71588 
HEX: 6250625B226DF62870AE23AF8D3FAC0760D71588 
h:e:x: 62:50:62:5b:22:6d:f6:28:70:ae:23:af:8d:3f:ac:07:60:d7:15:88 
base64: YlBiWyJt9ihwriOvjT+sB2DXFYg= <-- That is what I would like to achieve ... 

沒有與轉換字符串SHA1沒有問題,但我不知道如何將其再次轉換爲base64,因爲需要將每兩個字符視爲一個十六進制字節,然後將其傳遞給base64函數。

有人可以拋出光或粘貼代碼片段如何做到這一點?

謝謝!

+0

不是很清楚你在問什麼。究竟是什麼問題? – marekful

+0

我不知道如何將SHA1轉換爲base64以獲得上述結果 – John

+0

請記住,SHA1不再推薦用於密碼散列。如果可以,請使用'password_hash'。 – halfer

回答

10

Base64編碼應該在SHA1摘要的原始二進制版本上執行,而不是它的十六進制編碼。

你可以通過truesha1()功能的$raw_output參數得到這個原始版本:

$base64 = base64_encode(sha1("TestPassword", true)); 
1

我認爲這是一個遲到的反應,但我通過使用原始MD5,然後將其轉換實現了精確值以base64:

$base64 = base64_encode(hash("md5", "myPassword", true)); 
相關問題