要储存一些敏感的资料在档案或数据库, 基于安全考虑还是将资料加密, 在需要时再进行解读, 在 PHP 5.5 开始内建了加密函式 password_hash(), 操作上简单了不少。如果在其他 PHP 版本, 便需要加载加密的相关模组, 以下是不同版本实现的方法:
PHP 5.5 或以上:
|
1 2 3 4 |
<?php ##### 加密 my_password 字串 echo password_hash("my_password", PASSWORD_BCRYPT)."\n"; ?> |
要验证用户输入的密码, 可以用 password_verify():
|
1 2 3 4 5 6 7 8 9 10 |
<?php $password = 'my_password'; ### 原始密码 $hash_password = password_hash($password, PASSWORD_BCRYPT); if (password_verify($password , $hash_password)) { echo "密码正确"; } else { echo "密码错误"; } ?> |
未到 PHP 5.5, 但在 5.3.7 或以上 (包括 Redhat PHP 5.3.3 或以上), 可以使用 password_compat 模组, 使用上与 PHP 5.5 的 password_hash() 及 password_verify() 相同, 只要下载模组后, 在程式开头加载 lib 目录内的 password.php 即可, 即是这样:
|
1 2 3 |
<?php require "lib/password.php"; echo password_hash("my_password", PASSWORD_BCRYPT)."\n"; |