位置: 编程技术 - 正文

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 对数组进行排序详解及实例代码

  • 费用的进项税额可以抵扣吗
  • 购买财务软件做什么科目
  • 收到财政局拨款填到现金流量表哪一项
  • 小规模纳税人开工程款税率是多少
  • 小微小型微利企业减按20%的所得税税率征收企业所得税
  • 发票上盖了老税号怎么办
  • 分公司企业所得税分配比例
  • 上个月工资没有发
  • 下列支出不可以从其应纳税所得额中扣除的是
  • 劳务报酬所得是什么
  • 未实缴出资的股东退股
  • 以前年度的所得税怎么入账
  • 含税和不含税哪个对卖方有利
  • 用现金缴纳海关增值税能否抵扣?
  • 旧税号的发票专用章还能使用吗
  • 增值税普票怎么验证真伪
  • 税收预测表怎么填写
  • 学校应该缴纳的税
  • 使用简易计税方法是什么意思
  • 发票过期一年可以用吗
  • 消耗性生物资产的账务处理
  • 初级考试备考计划
  • 统一社会信用代码证
  • 出口的会计分录
  • 核定征收企业所得税应税所得率
  • 企业所得税增值税完税证明
  • 苹果电脑初始化设置
  • 腾达路由器管理员密码
  • mac环境搭建
  • node -v
  • 未分配利润进行利润分配分录
  • 售后回租经营租赁可以抵扣吗
  • 营改增后土地增值税
  • php是基于
  • 短期借款转长期借款利息
  • 营改增之前的房子现在出售怎么开票
  • 石炭纪的树有多高
  • 微信公众平台官网
  • java聚合工程
  • 电子税务局怎么注册
  • 上月购进固定资产次月退货已开具红字发票如何入账
  • 印花税应计入哪里
  • 关于帝国战争的游戏
  • 织梦怎么添加相关
  • 保险公司工伤怎么赔付
  • 2020年增值税税收政策
  • SQL Server 2005 DTS导入平面数据出现错误解决方案
  • 进项认证以后如何处理
  • 银行汇票与商业汇票的本质不同
  • 股东变更实收资本变更吗
  • 跨期费用账务处理
  • 收到上年度所得税返还会计分录
  • 已经抵扣的发票不见了怎么办?
  • 生产成本福利费如何分摊
  • 培训费开票属于劳务费吗
  • 公司买护肤品发票如何入账
  • 公司支付劳务工资怎么做账
  • 什么情况下可以不交物业费
  • 个人如何成立公司
  • sql server 2005如何使用
  • window系统怎么用
  • 双系统没有选择
  • propelac.exe - propelac是什么进程 有什么用
  • centos7 vncserver
  • win7打印机删除后怎么恢复
  • win7 64位旗舰版下载后怎样禁用搜索记录?win7禁用搜索记录的设置方法
  • win10系统自带杀毒软件
  • linux小技巧
  • android开发环境配置
  • opengl perspective
  • jquery插件之家
  • import和export区别
  • javascript中变量的命名规则有哪些?
  • javascript基础笔记
  • jquery获取点击元素的id
  • jquery 插件编写
  • javascript如何写操作命令
  • 群租房怎么举报电话
  • 四川省税务干部学校官网
  • 全款房契税退税需要什么资料
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设