![PHP怎么处理密码_第1页](http://file4.renrendoc.com/view/f11d1a30d791007389c06d73a9590fdc/f11d1a30d791007389c06d73a9590fdc1.gif)
![PHP怎么处理密码_第2页](http://file4.renrendoc.com/view/f11d1a30d791007389c06d73a9590fdc/f11d1a30d791007389c06d73a9590fdc2.gif)
![PHP怎么处理密码_第3页](http://file4.renrendoc.com/view/f11d1a30d791007389c06d73a9590fdc/f11d1a30d791007389c06d73a9590fdc3.gif)
![PHP怎么处理密码_第4页](http://file4.renrendoc.com/view/f11d1a30d791007389c06d73a9590fdc/f11d1a30d791007389c06d73a9590fdc4.gif)
![PHP怎么处理密码_第5页](http://file4.renrendoc.com/view/f11d1a30d791007389c06d73a9590fdc/f11d1a30d791007389c06d73a9590fdc5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PHP怎么处理密码PHP怎么处理密码在使用PHP开发Web应用的中,很多的应用都会要求用户注册,而注册的时候就需要我们对用户的信息进行处理了,最常见的莫过于就是邮箱和密码了?大家知道PHP怎么处理密码吗?下面就跟随小编一起来看看吧!MD5相信很多PHP开发者在最先接触PHP的时候,处理密码的首选加密函数可能就是MD5了,我当时就是这样的:$password = md5($_POSTpassword);上面这段代码是不是很熟悉?然而MD5的加密方式目前在PHP的江湖中貌似不太受欢迎了,因为它的加密算法实在是显得有点简单了,而且很多破解密码的站点都存放了很多经过MD5加密的密码字符串,所以这里我是
2、非常不提倡还在单单使用MD5来加密用户的密码的。SHA256 和 SHA512其实跟前面的MD5同期的还有一个SHA1加密方式的,不过也是算法比较简单,所以这里就一笔带过吧。而这里即将要说到的 SHA256 和 SHA512 都是来自于SHA2家族的加密函数,看名字可能你就猜的出来了,这两个加密方式分别生成256和512比特长度的hash字串。他们的使用方法如下:$password = hash(sha256, $password);PHP内置了 hash() 函数,你只需要将加密方式传给 hash() 函数就好了。你可以直接指明 sha256 , sha512 , md5 , sha1 等加
3、密方式。盐值在加密的过程,我们还有一个非常常见的小伙伴:盐值。对,我们在加密的时候其实会给加密的字符串添加一个额外的字符串,以达到提高一定安全的目的:function generateHashWithSalt($password) $intermediateSalt = md5(uniqid(rand(), true);$salt = substr($intermediateSalt, 0, 6);return hash(sha256, $password . $salt);Bcrypt如果让我来建议一种加密方式的话, Bcrypt 可能是我给你推荐的最低要求了,因为我会强烈推荐你后面会说到的
4、 Hashing API ,不过 Bcrypt 也不失为一种比较不错的加密方式了。function generateHash($password) if (defined(CRYPT_BLOWFISH) & CRYPT_BLOWFISH) $salt = $2y$11$ . substr(md5(uniqid(rand(), true), 0, 22);return crypt($password, $salt);Bcrypt 其实就是 Blowfish 和 crypt() 函数的结合,我们这里通过CRYPT_BLOWFISH 判断 Blowfish 是否可用,然后像上面一样生成一个盐值,不过
5、这里需要注意的是, crypt() 的盐值必须以 $2a$ 或者 $2y$ 开头Password Hashing API这里才是我们的重头戏, Password Hashing API 是PHP 5.5之后才有的新特性,它主要是提供下面几个函数供我们使用:password_hash() 对密码加密.password_verify() 验证已经加密的密码,检验其hash字串是否一致.password_needs_rehash() 给密码重新加密.password_get_info() 返回加密算法的名称和一些相关信息.虽然说 crypt() 函数在使用上已足够,但是 password_hash(
6、) 不仅可以使我们的代码更加简短,而且还在安全方面给了我们更好的保障,所以,现在PHP的官方都是推荐这种方式来加密用户的密码,很多流行的框架比如 Laravel 就是用的这种加密方式。$hash = password_hash($passwod, PASSWORD_DEFAULT);对,就是这么简单,一行代码,All done。PASSWORD_DEFAULT 目前使用的就是 Bcrypt ,所以在上面我会说推荐这个,不过因为 Password Hashing API 做得更好了,我必须郑重地想你推荐 Password Hashing API 。这里需要注意的是,如果你代码使用的都是 PASS
7、WORD_DEFAULT 加密方式,那么在数据库的表中,password字段就得设置超过60个字符长度,你也可以使用 PASSWORD_BCRYPT ,这个时候,加密后字串总是60个字符长度。这里使用 password_hash() 你完全可以不提供盐值 (salt) 和 消耗值 (cost),你可以将后者理解为一种性能的消耗值, cost 越大,加密算法越复杂,消耗的内存也就越大。当然,如果你需要指定对应的盐值和消耗值,你可以这样写:$options = salt = custom_function_for_salt(), /write your own code to generate a
8、 suitable saltcost = 12 / the default cost is 10;$hash = password_hash($password, PASSWORD_DEFAULT, $options);密码加密过后,我们需要对密码进行验证,以此来判断用户输入的密码是否正确:if (password_verify($password, $hash) / Passelse / Invalid很简单的吧,直接使用 password_verify 就可以对我们之前加密过的字符串(存在数据库中)进行验证了。然而,如果有时候我们需要更改我们的加密方式,如某一天我们突然想更换一下盐值或者提高一下消耗值,我们这时候就要使用到 password_needs_rehash() 函数了:if (password_needs_rehash($hash, PASSWORD_DEFAULT, cost = 12) / cost change to 12$hash = password_hash($password, PASSWORD_DEFAULT, cost = 12);/ dont forget to store the new hash!只有这样,PHP的 Password Hashing API 才会知道我们重现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城乡污水处理和管网建设工程项目可行性研究报告写作模板-申批备案
- 2025年江西陶瓷工艺美术职业技术学院高职单招职业适应性测试近5年常考版参考题库含答案解析
- 2025年昆明铁道职业技术学院高职单招职业适应性测试近5年常考版参考题库含答案解析
- 2025年揭阳职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 2025年氢能源行业发展动态与前景分析
- 展览展示服务合同模板
- 幼儿园支教工作活动方案总结四篇
- 计件工资劳动合同范文
- 酒店转让简单合同范本
- 场摊位的租赁合同年
- 2025年度高端商务车辆聘用司机劳动合同模板(专业版)4篇
- GB/T 45107-2024表土剥离及其再利用技术要求
- 2025长江航道工程局招聘101人历年高频重点提升(共500题)附带答案详解
- 2025年黑龙江哈尔滨市面向社会招聘社区工作者1598人历年高频重点提升(共500题)附带答案详解
- 《妊娠期恶心呕吐及妊娠剧吐管理指南(2024年)》解读
- 《黑神话:悟空》跨文化传播策略与路径研究
- 《古希腊文明》课件
- 居家养老上门服务投标文件
- 长沙市公安局交通警察支队招聘普通雇员笔试真题2023
- 2025年高考语文作文满分范文6篇
- 零售业连锁加盟合同
评论
0/150
提交评论