2009-10-26 71 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