password_hash, password_verify

password_hash() 使用足够强度的单向散列算法创建密码的散列(hash)。 password_hash() 兼容 crypt()。 所以, crypt() 创建的密码散列也可用于 password_hash()

password_verify — 验证密码是否和散列值匹配

crypt() 使用的是单向算法

 vendor/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php

/**
 * Hash the given value.
 *
 * @param  string  $value
 * @param  array   $options
 * @return string
 *
 * @throws \RuntimeException
 */
public function make($value, array $options = [])
{
    $hash = password_hash($value, PASSWORD_BCRYPT, [
        'cost' => $this->cost($options),    // 10 用来指明算法递归的层数
        // salt 供散列密码的盐值,最好选择简单的使用默认产生的盐值
    ]);

    if ($hash === false) {
        throw new RuntimeException('Bcrypt hashing not supported.');
    }

    return $hash;
}
/**
 * Check the given plain value against a hash.
 *
 * @param  string  $value
 * @param  string  $hashedValue
 * @param  array   $options
 * @return bool
 */
public function check($value, $hashedValue, array $options = [])
{
    if (strlen($hashedValue) === 0) {
        return false;
    }

    return password_verify($value, $hashedValue);
}
测试结果:(60个字符)
Hash:$2y$10$DzSZNpytRNVnxzrI0GvhZu/6I.lyP6mHadg9b4hCw6SaBrXZFVKC2  bool(true)
Hash:$2y$10$GTIHs98/RoEOPoSNSns8q.FrAP1RHJCmDZxWFR0yOy.WmijlLC3DG  bool(true)
Hash:$2y$10$WuVTezFlGQh66/78HOjABeHSWvTIxfoY4tx7Sy8qrD2YTqbOnKv2W  bool(true)
$hash = password_hash('peter', PASSWORD_BCRYPT, [
    'cost' => 10,
]);
print_r('Hash:' . $hash . '  ');
$res = password_verify('peter', $hash);
var_dump($res);exit();

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值