hash

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash生成哈希值 (消息摘要)

说明

hash ( string $algo , string $data [, bool $raw_output = FALSE ] ) : string

参数

algo

要使用的哈希算法,例如:"md5","sha256","haval160,4" 等。

data

要进行哈希运算的消息。

raw_output

设置为 TRUE 输出原始二进制数据, 设置为 FALSE 输出小写 16 进制字符串。

返回值

如果 raw_output 设置为 TRUE, 则返回原始二进制数据表示的信息摘要, 否则返回 16 进制小写字符串格式表示的信息摘要。

更新日志

版本 说明
5.4.0 tiger 算法使用大端(big-endian)字节序。参见下面的示例。

范例

Example #1 一个 hash() 例程

<?php
echo hash('ripemd160''The quick brown fox jumped over the lazy dog.');
?>

以上例程会输出:

ec457d0a974c48d5685a7efa03d137dc8bbde7e3

Example #2 使用 PHP 5.4 或者更高版本计算 tiger 哈希值

<?php
function old_tiger($data ""$width=192$rounds 3) {
    return 
substr(
        
implode(
            
array_map(
                function (
$h) {
                    return 
str_pad(bin2hex(strrev($h)), 16"0");
                },
                
str_split(hash("tiger192,$rounds"$datatrue), 8)
            )
        ),
        
048-(192-$width)/4
    
);
}
echo 
hash('tiger192,3''a-string'), PHP_EOL;
echo 
old_tiger('a-string'), PHP_EOL;
?>

以上例程在PHP 5.3中的输出:

146a7492719b3564094efe7abbd40a7416fd900179d02773
64359b7192746a14740ad4bb7afe4e097327d0790190fd16

以上例程在PHP 5.4中的输出:

64359b7192746a14740ad4bb7afe4e097327d0790190fd16
146a7492719b3564094efe7abbd40a7416fd900179d02773

参见

  • hash_file() - 使用给定文件的内容生成哈希值
  • hash_hmac() - 使用 HMAC 方法生成带有密钥的哈希值
  • hash_init() - 初始化增量哈希运算上下文
  • md5() - 计算字符串的 MD5 散列值
  • sha1() - 计算字符串的 sha1 散列值

关注编程学问公众号