首页
友链
壁纸
留言
今日热榜
更多
关于
时光
推荐
精品流量卡
Search
1
都二十多年了,你的梦为什么还没碎!
57,100 阅读
2
2022年5个好用的 BT/ 磁力链接下载工具推荐 |Windows 、安卓系统
37,447 阅读
3
nps内网穿透实现外网访问树莓派
32,437 阅读
4
实践利用宝塔建emlog个人博客-超详细【原创】
26,139 阅读
5
Typecho-Joe-Theme主题帮助文档
24,665 阅读
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
登录
Search
标签搜索
PHP
HTML
API
Javascript
源码
JS
Vue
Github
CloudFlare
接口
函数
SQL
ASP.NET
MVC
EF
T4模板
后台管理
CDN
微信小程序
MAC
韩小韩
累计撰写
262
篇文章
累计收到
1,310
条评论
首页
栏目
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
页面
友链
壁纸
留言
今日热榜
关于
时光
推荐
精品流量卡
搜索到
2
篇与
PHP哈希
的结果
2020-09-24
最安全的PHP密码加密方法
在PHP开发过程中,很多人PHP密码加密都是用的md5和sha1(包括sha256.......),但不知道,随着技术进步和计算机硬件的提升(集群、分布式、云计算),破解者可以快速使用“暴力”(彩虹表)方式来寻找密码加密后散列码所对应的原始数据。问:以上问题,对于现在的PHP开发者来说,我们应该怎么办?答:有空大家不妨去看一下:PHP“密码散列安全”问题与解决方法最安全的PHP密码加密方法:PHP官方自带的密码哈希函数 password_hash()常用的MD5、SHA1、SHA256哈希算法,是面向快速、高效进行哈希处理而设计的。随着技术进步和计算机硬件的提升,如今强大的计算机很容易破解这种算法。也就是说,不要用MD5、SHA1、SHA256这种哈希方法加密密码了,不太安全。还好,PHP内置了密码哈希函数password_hash,使用这个方法,PHP会升级底层的算法,达到如今的安全标准水平。注意:PHP 5.5 之后引入 Password hashing API 用于创建和校验哈希密码,它属于内核自带,无需进行任何扩展安装和配置。函数具体怎么用?我就不多说了,请大家自行查手册,我简单给大家解释一下:为什么建议大家用password_hash()函数?password_hash()会随机生成“盐” 。password_hash()加密后的值包括了“随机盐”+“密码散列“组合的值。当然生成这个值是通过了一定算法的,不要问为什么?数据库只需要一个字段就可以存取“随机盐”+“密码散列“值。我以前开发项目,为了保证不同用户用不同的盐,我数据库还用了两个字段,一个存密码散列值,另一个存盐的值。密码验证简单,只需要用password_verify()函数验证即可!password_hash() 加密用法示例:(推荐)<?php /** - 我们想要使用默认算法散列密码 - 当前是 BCRYPT 算法,并会产生 60 个字符的结果。 - 据说bcrypt算法永不过时。 - - 请注意,随时间推移,默认算法可能会有变化, - 所以需要储存的空间能够超过 60 字(255字不错) */ echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT); ?>以上例程的输出类似于:$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a加密后的散列值存数据库这样我们可以直接把上面加密后的值存入数据库,只需要一个字段。password_verify() 验证密码是否和散列值匹配用法示例:<?php // 想知道以下字符从哪里来,可参见 password_hash() 的例子 $hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; if (password_verify('rasmuslerdorf', $hash)) { echo '密码正确'; } else { echo '密码错误'; } ?>更多相关密码散列算法函数:password_algos — 获取可用的密码哈希算法IDpassword_get_info — 返回指定散列(hash)的相关信息password_hash — 创建密码的散列(hash)password_needs_rehash — 检测散列值是否匹配指定的选项password_verify — 验证密码是否和散列值匹配总结:可能很多人不知道,password_hash() 这个函数,它的前身其实就是phpass,phpass是一个开源类库,它可以让我们更方便使用bcrypt加密算法。最后请参考PHP官方手册:https://www.php.net/manual/zh/ref.password.phpphpass网址:http://www.openwall.com/phpass/
2020年09月24日
1,355 阅读
0 评论
0 点赞
2020-03-11
(PHP)Redis Hash(哈希)操作
(PHP)Redis Hash(哈希)操作/** * * Hash操作 * 哈希操作 * 可理解为数据库操作 * */ //为user表中的字段赋值。成功返回1,失败返回0。若user表不存在会先创建表再赋值,若字段已存在会覆盖旧值。 $redis->hSet('user', 'name', '222'); //获取user表中指定字段的值。若user表不存在则返回false。 $redis->hGet('user', 'realname'); //查看user表的某个字段是否存在,存在返回true,否则返回false。 $redis->hExists('user', 'realname'); //删除user表的一个字段,不支持删除多个字段。成功返回1,否则返回0。 $redis->hDel('user', '222'); //同时设置某个user表的多个字段值。成功返回true。 $redis->hMset('user', ['name' => 'jet', 'age' => 18]); //同时获取某个user表的多个字段值。其中不存在的字段值为false。 $redis->hMget('user', ['name', 'age']); //获取某个user表所有的字段和值。 $redis->hGetAll('user'); //获取某个user表所有字段名。user表不存在时返回空数组,key不为user表时返回false。 $redis->hKeys('user'); //获取某个user表所有字段值。 $redis->hVals('user'); //为user表中不存在的字段赋值。若user表不存在则先创建,若字段已存在则不做任何操作。设置成功返回true,否则返回false。 $redis->hSetNx('user', 'realname', 'jetwu'); //获取某个user表的字段数量。若user表不存在返回0,若user不是hash表则返回false。 $redis->hLen('user'); //为user表中的指定字段加上指定的数值,若user表不存在则先创建,若字段不存在则先初始化值为0再进行操作,若字段值为字符串则返回false。设置成功返回字段新值。 $redis->hIncrBy('user', 'age', 10); //为user表中的指定字段加上指定浮点数值。 $redis->hIncrBy('user', 'age', 1.5);
2020年03月11日
1,461 阅读
0 评论
0 点赞