欢迎各位兄弟 发布技术文章
这里的技术是共享的
Argon2 是一种现代的密码哈希函数,被设计为取代其他较旧的哈希函数,如 MD5 和 SHA1,它提供了更高的安全性。在 PHP 中,你可以使用 password_hash()
和 password_verify()
函数与 Argon2 哈希算法一起工作。
下面是一个使用 Argon2 进行密码哈希和验证的 PHP 示例:
php复制代码<?php
// 原始密码 $password = 'my_secure_password';
// 创建一个 Argon2 哈希(默认是 Argon2i) $hashedPassword = password_hash($password, PASSWORD_ARGON2I);
// 存储哈希值到数据库或其他存储介质(这里只是打印出来) echo "Hashed Password: " . $hashedPassword . PHP_EOL;
// 假设你从数据库或其他存储介质中检索到了哈希值 $storedHash = $hashedPassword; // 在实际场景中,你会从数据库或其他地方获取这个值
// 用户输入的密码进行验证 $userInput = 'my_secure_password'; // 假设这是用户输入的密码
if (password_verify($userInput, $storedHash)) { echo "Password verified successfully!"; } else { echo "Invalid password."; }
// 注意:在实际应用中,不要将原始密码或哈希值直接打印或输出到任何地方。 // 这只是一个示例,用于展示如何使用 Argon2 哈希和验证密码。 ?>
在上面的示例中,我们使用了 password_hash()
函数来创建一个 Argon2 哈希(默认是 Argon2i)。然后,我们使用 password_verify()
函数来验证用户输入的密码是否与存储的哈希值匹配。
请注意,password_hash()
函数的第二个参数是哈希算法。在 PHP 7.2+ 中,你可以使用 PASSWORD_ARGON2I
(Argon2id 的变种,具有更高的安全性)或 PASSWORD_ARGON2_DEFAULT
(这取决于 PHP 配置和可用性,通常是 Argon2id 或 Argon2i)。
还要注意的是,你应该始终使用参数化查询或预编译语句来防止 SQL 注入攻击,当你将哈希值存储到数据库时。在上面的示例中,我们只是简单地打印了哈希值,但在实际应用中,你应该将其安全地存储到数据库中。