位置: 编程技术 - 正文

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

  • 个税放在哪个科目核算
  • 清税证明是什么要钱吗
  • 工程会计和工业会计进销项区别是什么
  • 电子记账凭证需要划线吗
  • 小规模纳税人办公场地要求
  • 房地产企业增值税纳税义务发生时间
  • 开具的销项发票是否都要入收入科目吗?
  • 建筑施工企业开立临时账户
  • 税收强制执行措施包括哪些
  • 暂估入库的货物销售了当月多交增值税了
  • 物业营改增什么时候开始
  • 应收账款周转天数正常范围
  • 会计当年是指哪一年
  • 电子普票开具的最新文件
  • 收回代付费用用什么科目
  • 上级拨入资金计入什么科目
  • 企业第一年利润是多少
  • 超市库存商可以分为几大类
  • 购买办公用品发放给各部门使用
  • 电脑装系统分区出现错误
  • wordpress主题0skr
  • php 文件操作
  • 爱沙尼亚的故事
  • 0x0000000a蓝屏代码怎么解决
  • 苹果发布macOS13.5开发者预览版
  • kb4586853 补丁
  • 个人如何办理住房贷款
  • islp2sta.exe - islp2sta是什么进程 有什么作用
  • 承租厂房需要缴纳什么税
  • vue3 vue.config.js配置Element-plus组件和Icon图标实现按需自动引入
  • cnqmax.exe进程的详细注解 cnqmax进程是病毒吗 安全吗
  • PHP:pcntl_sigtimedwait()的用法_PCNTL函数
  • php解析配置文件
  • 一台电脑能不能接两个键盘
  • 自身权益工具有哪些
  • 上市公司回购股票意味着什么
  • php -v
  • 超像素和markpage的区别
  • 企业向合伙企业分红怎么交税
  • 固定资产投资入股是否缴纳增值税
  • mongodb bi
  • sql server如何操作
  • 公司借款方式
  • 总承包可以转包吗
  • 足浴店装修大概多少钱一平
  • 金税四期可以查到闭环开票信息吗
  • 工程施工企业收入1750万,利润怎么算
  • 购进原材料发生的保险费
  • 收到国库退款
  • 超期应收款管控
  • 公益性捐赠全额扣除,企业所得税
  • 进项税额转出多了怎么调整
  • 知识产权服务费可以计入研发费用吗
  • 担保费能否抵扣增值税
  • 什么费用可以列入研发费用
  • 《实施条例》第二十七条
  • 增值税进项税转出额可以税前扣除吗
  • 班车租赁服务
  • 企业信息页
  • 原材料会计科目
  • 原始凭证基本要求是什么
  • 财务会计的基本概念
  • 会计当期损益指什么
  • 用SELECT... INTO OUTFILE语句导出MySQL数据的教程
  • Mysql 1864 主从错误解决方法
  • 通用SQL存储过程分页以及asp.net后台调用的方法
  • 安装nfs命令
  • 红石玩家入门
  • 安装fedora33
  • win8使用教程和技能
  • centos基本操作命令
  • linux系统怎么查看防火墙状态
  • bat批处理命令大全
  • Javascript typeof与instanceof的区别
  • js实现物体移动
  • npm安装淘宝镜像操作方式
  • js面向对象的几种方式
  • jquery获取点击元素
  • 辽宁省地方税务局公告2014年第10号
  • 青岛市地方税务局关于发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设