Php 简明教程
PHP – Hashing
“哈希” 一词表示一种对数据(特别是文本)进行加密以获得固定长度值的技术。PHP 库包含许多函数,可以通过应用不同的哈希算法(例如 md5、SHA2、HMAC 等)对数据执行哈希。获得的加密值称为原始密钥的哈希。
哈希处理是一个单向过程,从某种意义上说,无法对哈希进行反转,因而无法获取原始键。
Applications of Hashing
哈希技术被有效用于以下目的:
Hashing Algorithms in PHP
PHP 支持多个哈希算法:
-
MD5 - MD5 是一种 128 位的哈希函数,广泛用于软件中,用于验证传输文件的完整性。128 位的哈希值通常表示为 32 位十六进制数。例如,“frog”这个单词总是生成哈希值“8b1a9953c4611296a827abf8c47804d7”
-
SHA - SHA 的全称是安全散列算法,由美国国家标准与技术研究院(NIST)制定的一系列标准。SHA 是 MD5 的改进版本,用于哈希数据和证书。SHA-1 和 SHA-2 是该算法的不同版本。SHA-1 是一个 160 位的哈希算法。SHA-2 实际上是一个哈希“系列”,有各种长度,其中最受欢迎的是 256 位。
-
HMAC - HMAC(基于哈希的消息认证码)是一种加密认证技术,使用哈希函数和密钥。
-
HKDF - HKDF 是一个简单的密钥派生函数 (KDF),基于 HMAC 消息认证码。
-
PBKDF2 - PBKDF2(基于密码的密钥派生函数 2)是一种哈希算法,可根据密码创建加密密钥。
Hash Functions in PHP
PHP 库包含多个哈希函数:
The hash_file Function
该函数返回一个字符串,其中包含计算出的消息摘要,小写十六进制。
hash_file(
string $algo,
string $filename,
bool $binary = false,
array $options = []
): string|false
algo 参数是所选哈希算法的类型(即 “md5”、“sha256”、“haval160,4”等)。 filename 是描述待哈希文件位置的 URL;支持 fopen 包装器。
Example
请看以下示例:
<?php
/* Create a file to calculate hash of */
$fp=fopen("Hello.txt", "w");
$bytes = fputs($fp, "The quick brown fox jumped over the lazy dog.");
fclose($fp);
echo hash_file('md5', "Hello.txt");
?>
它将生成以下 output −
5c6ffbdd40d9556b73a21e63c3e0e904
The hash() Function
hash() 函数生成哈希值(消息摘要):
hash(
string $algo,
string $data,
bool $binary = false,
array $options = []
): string
algo 参数是所选哈希算法的类型(即 “md5”、“sha256”、“haval160,4”等)。 data 参数是要进行哈希处理的消息。如果 binary 参数为 true ,它将输出原始二进制数据;“false” 输出小写十六进制。
Example
该函数返回一个字符串,其中包含计算出的消息摘要,小写十六进制。
<?php
echo "Using SHA256 algorithm:" . hash('sha256', 'The quick brown fox jumped over the lazy dog.'). PHP_EOL;
echo "Using MD5 algorithm:",hash('md5', 'The quick brown fox jumped over the lazy dog.'), PHP_EOL;
echo "Using SHA1 algorithm:" . hash('sha1', 'The quick brown fox jumped over the lazy dog.');
?>
它将生成以下 output −
Using SHA256 algorithm:68b1282b91de2c054c36629cb8dd447f12f096d3e3c587978dc2248444633483
Using MD5 algorithm:5c6ffbdd40d9556b73a21e63c3e0e904
Using SHA1 algorithm:c0854fb9fb03c41cce3802cb0d220529e6eef94e