<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 这部分与文章内容无关,可作为开头占位</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"欢迎阅读本篇文章。"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 正文开始</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h1>hash_hmac_file() 和 hash_file() 两个函数有什么区别?应该怎么选择使用</h1>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>在 PHP 中,处理文件哈希值是常见的需求,尤其是在验证文件完整性或防篡改时。PHP 提供了两个常用函数:<code>hash_file()";
echo "这个函数的特点是快速生成文件的摘要,用于检查文件完整性或做简单的去重,但它本身不具备防篡改的能力。
"; echo "hash_hmac_file() 是基于 HMAC(Hash-based Message Authentication Code)的文件哈希生成函数,需要额外提供一个密钥。示例用法:
"; echo "
\$key = 'my_secret_key';
\$hmac = hash_hmac_file('sha256', '/path/to/file.txt', \$key);
echo \$hmac;
";
echo "HMAC 的作用不仅是生成哈希值,还可以保证数据未被篡改。因为计算哈希时使用了密钥,即使攻击者拿到文件,也无法伪造正确的 HMAC 值而不知密钥。
"; echo "如果只是为了验证文件是否被传输过程中损坏,hash_file() 就足够了。但如果需要防止文件被篡改,或者需要进行安全验证,hash_hmac_file() 是更好的选择。
"; echo "总结来说:hash_file() 偏向完整性校验,hash_hmac_file() 偏向安全防篡改。根据实际需求选择使用。
"; ?>