2009-10-26 103 views

回答

8

不知道你所說的 「不同」,但第一行的意思:

$hassh = base64_encode(sha1($word)); 
var_dump($hassh); 

讓你:

string 'YWFmNGM2MWRkY2M1ZThhMmRhYmVkZTBmM2I0ODJjZDlhZWE5NDM0ZA==' (length=56) 

當第二:

$hassh = hash('sha1', $word); 
var_dump($hassh); 

取得如下結果:

string 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d' (length=40) 


所以,首先,我不知道你的意思是使用BASE64_ENCODE:似乎沒有真正有用的在這裏,大概是沒有必要的:SHA1已經返回一個字符串:

$word = 'hello'; 
var_dump(sha1($word)); 

獲取你:

string 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d' (length=40) 

節選本,這兩條線,與SHA1算法,得到同樣的事情。差異可能是hash可以使用很多散列算法。

哦,還有,也:

  • sha1存在,因爲PHP 4
  • hash只存在,因爲PHP> = 5.1.2
+0

感謝帕斯卡,我對代碼懷疑過,因爲afaik base編碼用於從二進制轉換爲chars,所以在加密時使用更多。你的擔心是否類似? – Chris 2009-10-26 05:44:44

+1

不客氣:-)不知道你的意思,但是,默認情況下,sha1已經返回一個字符串(如果第二個參數沒有設置爲true);所以,不需要base64編碼 – 2009-10-26 05:53:02

+0

聽起來不錯,你已經整理出來了。 – Chris 2009-10-26 06:02:30