这两行代码有何不同?

时间:2009-10-26 05:30:40

标签: php encryption hash

有人可以用非常缓慢的术语告诉我这两行PHP的区别吗?

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

$hassh =  hash(’sha1′, $word);

1 个答案:

答案 0 :(得分: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
  • 之后才存在