这两行代码有何不同?

Chr*_*ris -1 php encryption hash

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

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

$hassh =  hash(’sha1?, $word);
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 8

不确定你的意思是"不同",但第一行:

$hassh =  base64_encode(sha1($word));
var_dump($hassh);
Run Code Online (Sandbox Code Playgroud)

得到你:

string 'YWFmNGM2MWRkY2M1ZThhMmRhYmVkZTBmM2I0ODJjZDlhZWE5NDM0ZA==' (length=56)
Run Code Online (Sandbox Code Playgroud)

第二个:

$hassh =  hash('sha1', $word);
var_dump($hassh);
Run Code Online (Sandbox Code Playgroud)

得到你:

string 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d' (length=40)
Run Code Online (Sandbox Code Playgroud)


所以,首先,我不确定你是否打算使用base64_encode:这里似乎没有用,并且可能没有必要:sha1已经返回一个字符串:

$word = 'hello';
var_dump(sha1($word));
Run Code Online (Sandbox Code Playgroud)

得到你:

string 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d' (length=40)
Run Code Online (Sandbox Code Playgroud)

除此之外,使用sha1算法的那两行得到了相同的东西.区别可能是hash可以使用大量哈希算法.

哦,还有:

  • sha1 从PHP 4开始存在
  • hash 仅在PHP> = 5.1.2时存在