<?phpecho '<PRe>';$algos = hash_algos(); //列出所有支持的hash算法// print_r($algos);// ------------------------------------------------------// 字符串hash$data = 'The quick brown fox jumped over the lazy dog.';echo hash('md5', $data); //md5 哈希$key = 'md5-key';echo hash_hmac('md5', $data, $key); //使用 HMAC 方法生成带有密钥的哈希值// ------------------------------------------------------// 文件hash$file = 'hmac.txt';echo hash_file('md5', $file);echo hash_hmac_file('md5', $file, $key);// ------------------------------------------------------/** * @param $algo hash算法 * @param $data string|array 字符串或者字符串数组 * @param $options 进行哈希运算的可选设置,目前仅支持:HASH_HMAC。当指定此选项时,必须指定 key 参数 * @param $key 当 options 参数为 HASH_HMAC 时,使用此参数传入进行 HMAC 哈希运算时的共享密钥 */function my_hash_data($algo, $data, $options = 0, $key = NULL) { // resource hash_init ( string $algo [, int $options = 0 [, string $key = NULL ]] ) $ctx = hash_init($algo, $options, $key); if(is_string($data)) { hash_update($ctx, $data); } else if(is_array($data)) { foreach($data as $s) { hash_update($ctx, $s); //填充数据, 可以多次调用, 和拼接字符串效果一样 } } return hash_final($ctx); //输出最后的数据}// test codeecho my_hash_data('md5', $data);// ------------------------------------------------------/** * 文件类型 hash */function my_hash_file($algo, $filename, $options = 0, $key = NULL) { $ctx = hash_init($algo, $options, $key); /* 两个函数的不同之处: 1. hash_update_stream 第二个参数是一个打开的文件句柄 2. hash_update_file 第二个参数是一个文件名 */ hash_update_file($ctx, $filename); return hash_final($ctx);}// test codeecho my_hash_file('sha1', $file);
新闻热点
疑难解答
图片精选