zoukankan      html  css  js  c++  java
  • password_hash加密

    每次执行 password_hash('123456', PASSWORD_BCRYPT) 语句后,得到哈希值都不一样!
    给密码做哈希之前,会先加入一个随机子串,因为加入的随机子串每次是不一样的,所以得到的哈希值自然就不一样了。这就让在不同的服务中使用同一个密码的用户,他的密码的安全性变高了。这个随机子串就叫「盐值」,加入盐值的过程就是「加盐处理」。

    <?php
    $passwordHash = password_hash('123456', PASSWORD_BCRYPT);
    echo $passwordHash.PHP_EOL;
    
    $flag = password_verify('123456',$passwordHash);
    echo $flag.PHP_EOL;
    
    <?php
    function custom_function_for_salt() {
        return md5(mt_rand(1111,9999));
    }
    
    $options = [
        'salt' => custom_function_for_salt(), //自定义函数来获得盐值
        'cost' => 12 // the default cost is 10
    ];
    $passwordHash = password_hash('123456', PASSWORD_BCRYPT,$options);
    echo $passwordHash.PHP_EOL;
    
    $flag = password_verify('123456',$passwordHash);
    echo $flag.PHP_EOL;
    

    PASSWORD_BCRYPT 支持的选项:
    salt(string) - 手动提供散列密码的盐值(salt)。这将避免自动生成盐值(salt)。
    省略此值后,password_hash() 会为每个密码散列自动生成随机的盐值。这种操作是有意的模式。
    Warning
    盐值(salt)选项从 PHP 7.0.0 开始被废弃(deprecated)了。 现在最好选择简单的使用默认产生的盐值。
    cost (integer) - 代表算法使用的 cost。crypt() 页面上有 cost 值的例子。
    省略时,默认值是 10。 这个 cost 是个不错的底线,但也许可以根据自己硬件的情况,加大这个值。

  • 相关阅读:
    云计算分布式大数据神器Spark实战高手之旅
    Spring IOC及AOP学习总结
    Win7下不能查看xp系统共享的文件,解决方法
    c#怎样获取excel单元格的RGB颜色
    MySQL 全角转换为半角
    【剑指offer】旋转数组的最小值
    POJ 2524 :Ubiquitous Religions
    GitLal+sourceTree版本号管理
    ASP.NET MVC 过滤器(五)
    Java设计模式之观察者模式
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/10459786.html
Copyright © 2011-2022 走看看