PHP常用Hash加密函数指南
本文详解PHP中常用的hash加密函数,包括获取算法列表、生成字符串及文件哈希值、流式处理以及HMAC keyed-hash消息认证码的用法。通过具体代码示例,展示如何初始化哈希上下文、更新数据并输出最终结果。
获取可用的Hash算法
在开始之前,了解系统支持的哈希算法是第一步。hash_algos() 函数返回一个包含所有注册哈希算法名称的数组。
$hash_list = hash_algos(); // 返回注册的hash规则列表
print_r($hash_list); // 显示结果
基础Hash生成:字符串与文件
使用 hash() 和 hash_file() 可以直接对字符串或文件内容进行哈希计算。
- 创建测试文件: 首先创建一个包含特定文本的文件用于演示。
file_put_contents('example.txt', 'the quick brown fox jumped over the lazy dog.');
- 计算文件哈希: 使用
hash_file()可直接读取文件并生成指定算法(如md5)的哈希值。
echo hash_file('md5', 'example.txt');
- 计算字符串哈希: 使用
hash()对字符串进行哈希。
$str = "the quick brown fox jumped over the lazy dog.";
echo hash('ripemd160', $str); // 生成哈希值
流式Hash处理:初始上下文与增量更新
对于大文件或需要逐步输入数据的场景,可以使用上下文 (context) 机制:hash_init(), hash_update(), 和 hash_final()。
$ctx = hash_init('md5'); // 初始化一个hash值
hash_update($ctx, 'the quick brown fox'); // 向哈希值灌注数据
hash_update($ctx, 'jumped over the lazy dog.'); // 继续灌注数据
echo hash_final($ctx); // 输出最后的结果
通过流文件处理
也可以将数据写入临时文件后,通过 hash_update_stream() 进行处理。
$str = "the quick brown fox jumped over the lazy dog.";
$fp = tmpfile(); // 创建一个临时文件
fwrite($fp, $str); // 将字符串写入到临时文件
rewind($fp); // 倒回文件指针的位置
$ctx = hash_init('md5'); // 初始化一个hash值
hash_update_stream($ctx, $fp); // 向数据流中灌注数据
echo hash_final($ctx); // 输出结果
HMAC (Keyed-Hash Message Authentication Code)
HMAC 是一种基于密钥的哈希消息认证码。PHP提供了 hash_hmac() 和 hash_hmac_file() 来生成带有密钥的哈希值,常用于验证数据完整性和真实性。
$str = "the quick brown fox jumped over the lazy dog.";
echo hash_hmac('ripemd160', $str, 'secret'); // 生成包含密钥的hash值
对于文件操作:
$file = "example.txt";
$str = "the quick brown fox jumped over the lazy dog.";
file_put_contents($file, $str);
echo hash_hmac_file('md5', $file, 'secret'); // 生成一个包含密钥的hash值
其他算法示例
除了MD5和RIPEMD160,还可以使用SHA1等其他算法,原理相同。
$ctx = hash_init('sha1');
hash_update($ctx, 'the quick brown fox jumped over the lazy dog.');
echo hash_final($ctx); // 输出结果
以上就是PHP常用Hash加密函数的详细内容,更多关于PHP Hash加密的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













