尝试使用以下类:
<?php
class PassHash {
// blowfish
private static $algo = '$2a';
// cost parameter
private static $cost = '$31';
// mainly for internal use
public static function unique_salt() {
return substr(sha1(mt_rand()),0,22);
}
// this will be used to generate a hash
public static function hash($password) {
return crypt($password,
self::$algo .
self::$cost .
'$' . self::unique_salt());
}
// this will be used to compare a password against a hash
public static function check_password($hash, $password) {
$full_salt = substr($hash, 0, 29);
$new_hash = crypt($password, $full_salt);
return ($hash == $new_hash);
}
}
?>
将其包含在您的页面中,并包含以下内容:
include_once('passhash.class.php');
通过以下方式对密码进行哈希处理:
PassHash::hash("test");
并检查它:
if (PassHash::check_password($databasepassword, $formpassword)){
// do stuff
}
此功能使用 Blowfish 加密。有关 Blowfish 的更多信息,请访问 PHP.net/crypt
Blowfish 被认为是加密密码的最有效但最强大的方法。不要在不使用盐的情况下使用 MD5 或 SHA1!