位置: 编程技术 - 正文

PHP中的密码加密的解决方案总结(php代码加密方式)

编辑:rootadmin

推荐整理分享PHP中的密码加密的解决方案总结(php代码加密方式),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php 密码加密,php代码加密方式,php中的密码加密是什么,php密码加密技术phpass,php密码加密技术phpass,php密码加密技术phpass,php加密zend,php 密码加密,内容如对您有帮助,希望把文章链接给更多的朋友!

层出不穷的类似事件对用户会造成巨大的影响,因为人们往往习惯在不同网站使用相同的密码,一家“暴库”,全部遭殃

一般的解决方案。

1、将明文密码做单向hash

2、密码+salt后做单向hash,PHP内置了hash()函数,你只需要将加密方式传给hash()函数就好了。你可以直接指明sha, sha, md5, sha1等加密方式

单向哈希算法有一个特性,无法通过哈希后的摘要(digest)恢复原始数据,常用的单向哈希算法包括SHA-,SHA-1,MD5等。例如,对密码“passwordhunter”进 行SHA-哈希后的摘要(digest)如下:“bbedd2cc4bfbbec7eaefa9e0ba9bc2dc”

注意:攻击者可以将所有密码的常见组合进行单向哈希,得到一个摘要组合,然后与数据库中的摘要进行比对即可获得对应的密码。这个摘要组合也被称为rainbow table。更糟糕的是,一个攻击者只要建立上述的rainbow table,可以匹配所有的密码数据库。仍然等同于一家“暴库”,全部遭殃

比较好的解决方案

Bcrypt

PHP中的密码加密的解决方案总结(php代码加密方式)

Bcrypt 其实就是Blowfish和crypt()函数的结合,我们这里通过CRYPT_BLOWFISH判断Blowfish是否可用,然后像上面一样生成一个盐值,不过这里需要注意的是,crypt()的盐值必须以2a2a或者2y2y开头,详细资料可以参考下面的链接:

Hashing API

Password Hashing API是PHP 5.5之后才有的新特性,它主要是提供下面几个函数供我们使用

password_hash() ? 对密码加密.password_verify() ? 验证已经加密的密码,检验其hash字串是否一致.password_needs_rehash() ? 给密码重新加密.password_get_info() ? 返回加密算法的名称和一些相关信息.

虽然说crypt()函数在使用上已足够,但是password_hash()不仅可以使我们的代码更加简短,而且还在安全方面给了我们更好的保障,所以,现在PHP的官方都是推荐这种方式来加密用户的密码,很多流行的框架比如Laravel就是用的这种加密方式

PASSWORD_DEFAULT目前使用的就是Bcrypt,最好的还是Password Hashing API。这里需要注意的是,如果你代码使用的都是PASSWORD_DEFAULT加密方式,那么在数据库的表中,password字段就得设置超过个字符长度,你也可以使用PASSWORD_BCRYPT,这个时候,加密后字串总是个字符长度。

这里使用password_hash()你完全可以不提供盐值(salt)和 消耗值 (cost),你可以将后者理解为一种性能的消耗值,cost越大,加密算法越复杂,消耗的内存也就越大。当然,如果你需要指定对应的盐值和消耗值,你可以这样写

密码加密过后,我们需要对密码进行验证,以此来判断用户输入的密码是否正确

直接使用password_verify就可以对我们之前加密过的字符串(存在数据库中)进行验证了

如果有时候我们需要更改我们的加密方式,如某一天我们突然想更换一下盐值或者提高一下消耗值,我们这时候就要使用到password_needs_rehash()函数了

只有这样,PHP的Password Hashing API才会知道我们重现更换了加密方式,这样的主要目的就是为了后面的密码验证,password_get_info(),这个函数一般可以看到下面三个信息

algo ? 算法实例algoName ? 算法名字options ? 加密时候的可选参数

标签: php代码加密方式

本文链接地址:https://www.jiuchutong.com/biancheng/301688.html 转载请保留说明!

上一篇:PHP 以POST方式提交XML、获取XML,解析XML详解及实例(php如何post)

下一篇:php array_multisort 对数组进行排序详解及实例代码

  • 居民企业投资收益免征企业所得税
  • 企业的税务风险研究怎么写
  • 母子公司合并报表的条件
  • 营业外收入在所得税表中填入哪个科目
  • 公司名称变更发票还能认证吗
  • 境外保险是什么意思
  • 股份支付为什么计入资本公积?
  • 事业单位收到增资款
  • 工资不到3500用交个税吗
  • 建筑业交税会计分录
  • 小规模纳税人可以抵扣增值税专用发票吗
  • 个人所得税做账怎么做
  • 应付职工薪酬年末需要结转吗
  • 电脑怎么一键返回到桌面
  • 继承和赠与算夫妻共同财产吗
  • 如何解决windows7台试电脑蓝屏问题
  • 现金日记账和银行存款日记账登记
  • 公司固定资产出售给个人
  • 公司劳务费收入涉及哪些税
  • Win10 19043.1237 9月累积更新 KB5005565推送(附更新修复+下载)
  • 政府补助开票怎么申报增值税
  • 财政补助收入的账务处理
  • 外币债券汇兑损益怎么算
  • 应收账款可不可以作为质押合同的标的
  • 拍卖土地印花税
  • 未能连接到一个windows 的服务win7
  • .exe是指什么文件
  • 商业企业收到增值税
  • 如何配置apache
  • 企业预缴所得税怎么算
  • 微信小程序解锁安全吗
  • lsattr命令不存在
  • 应收账款与主营业务收入的比率
  • 赠送油卡怎么使用
  • 快递破损后赔偿还能把东西拿走吗
  • 递延收益期限
  • python中删除字典里的空项目
  • 请问如何在
  • 项目资金支付
  • 电商企业快递费怎么算
  • 事业单位成本核算具体指引—公立医院
  • 公司一直没营业也没报税,会怎样罚款?
  • 月中入职算一个月吗
  • sqlserver服务请求失败或服务未及时响应
  • 党费会计核算科目有哪些
  • 企业筹建期间可以上市吗
  • 财政拨入的专项款专账怎么做
  • 车户过户
  • 实收资本或股本什么意思
  • 企业接受股东划入资产的处理
  • 收到投资款如何申报印花税
  • 租金收入如何分红给股东
  • 暂估收不到发票,怎么处理
  • 无形资产计入待摊费用
  • Win7系统如何关闭自动更新
  • nvidia专业卡性能对比
  • windows vista pe
  • windows需要更新吗?
  • Fedora 9.0 Apache+PHP+MYSQL 环境安装
  • win10怎么自定义壁纸
  • mac怎么多开
  • mac怎么添加桌面
  • mac打印预览快捷键是什么
  • ias.exe是什么程序
  • 使用windows防火墙禁止软件联网
  • ubuntu无线网卡驱动离线安装
  • centos安装编译环境
  • pqv2isvc.exe - pqv2isvc是什么进程 有什么作用
  • win10回收站设置
  • shell随机
  • windows恢复版本
  • 批处理/s
  • android方法大全
  • pythonlist排序算法
  • Android性能优化的方面12个
  • [置顶]公主大人接下来是拷问时间31
  • 税务干部提升工作能力
  • 禅城有什么小孩好玩的地方
  • 武汉办房产证契税怎么交
  • 煤炭限产是利好还是利空
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设