求问password_hash算法的使用方法

讲声多谢帝骑哥 2017-09-21 05:55:36
这几天一直在研究使用password_hash 来处理密码入库 但不会怎么使用它来处理进入数据库的密码
MD5可以直接在数据库语句上执行:
$query = "INSERT INTO  member(urs_name,password,rt_time) VALUES ('{$_POST['urs_name']}',md5('{$_POST['password']}'))";

但password_hash不能直接在MYSQL语句上执行像这样:
$query = "INSERT INTO  member(urs_name,password,rt_time) VALUES ('{$_POST['urs_name']}',password_hash('{$_POST['password']}')";

会执行报错 求问password_hash要怎么做才能做到和数据库联动
...全文
658 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 8 楼 kyzy_yy_pm 的回复:
当然这是国内的情况,不过只要你加上salt,那么几乎就难以破解,除非找大的网站彩虹碰撞,不过碰撞破解的几率取决于你的salt的长度,salt越长碰撞破解的几率越渺茫,一般情况salt长度大于8位数那估计以现在的机器效率估计可以忽略
sha1(md5($password))这种怎么样 还有加salt怎么个用法
kyzy_yy_pm 2017-09-21
  • 打赏
  • 举报
回复
当然这是国内的情况,不过只要你加上salt,那么几乎就难以破解,除非找大的网站彩虹碰撞,不过碰撞破解的几率取决于你的salt的长度,salt越长碰撞破解的几率越渺茫,一般情况salt长度大于8位数那估计以现在的机器效率估计可以忽略
kyzy_yy_pm 2017-09-21
  • 打赏
  • 举报
回复
主流的目前依然是md5占大多数
kyzy_yy_pm 2017-09-21
  • 打赏
  • 举报
回复
引用 5 楼 php110v 的回复:
[quote=引用 4 楼 kyzy_yy_pm 的回复:] 登录判断: $username = $_GET['username']; $password = password_hash($_GET['password']); // 对输入的密码进行加密 $sql = "select * from `user` where username = '{$username} AND password = '{$password}'"; $res = mysql_query($sql); if (mysql_fetch_num($res)) { // 登录成功 } else { // 登录失败 } 上面的是一个大致的意思,一些地方没有做输入处理
好的 我试试 顺便问一下 大神 password_hash是否会比MD5安全 还有就是现在主流都是用什么加密[/quote] password_hash理论上比md5强度高,不过一般密码都是加salt的,例如md5大家一般都不会用只加密一次的,而是这样: $password = md5(md5('abc123') . $salt); 这样一来就成超越几何倍数的增加了破解的难度了,每个用户都有一个自己单独的salt,例如用户张三的salt是Yfssdf,李四的salt是12KKdf
  • 打赏
  • 举报
回复
引用 4 楼 kyzy_yy_pm 的回复:
登录判断: $username = $_GET['username']; $password = password_hash($_GET['password']); // 对输入的密码进行加密 $sql = "select * from `user` where username = '{$username} AND password = '{$password}'"; $res = mysql_query($sql); if (mysql_fetch_num($res)) { // 登录成功 } else { // 登录失败 } 上面的是一个大致的意思,一些地方没有做输入处理
好的 我试试 顺便问一下 大神 password_hash是否会比MD5安全 还有就是现在主流都是用什么加密
kyzy_yy_pm 2017-09-21
  • 打赏
  • 举报
回复
登录判断: $username = $_GET['username']; $password = password_hash($_GET['password']); // 对输入的密码进行加密 $sql = "select * from `user` where username = '{$username} AND password = '{$password}'"; $res = mysql_query($sql); if (mysql_fetch_num($res)) { // 登录成功 } else { // 登录失败 } 上面的是一个大致的意思,一些地方没有做输入处理
  • 打赏
  • 举报
回复
引用 1 楼 kyzy_yy_pm 的回复:
你password_hash是php实现的?你可以在php中将密码使用password_hash加密,将结果放在sql语句中使用php执行,如果你非要在mysql中使用,那么你就得在mysql中写函数了,不过不建议这么整,因为这种逻辑都是通用性的需要在php中一些地方调用的,你这样做就比较单一了
PHP中加密再将结果放到SQL语句中使用PHP执行 这个方法我试过 是可以把数据入库 加密了密码 但这有个问题是 在登录时候 验证会出问题 验证不了
  • 打赏
  • 举报
回复
引用 1 楼 kyzy_yy_pm 的回复:
你password_hash是php实现的?你可以在php中将密码使用password_hash加密,将结果放在sql语句中使用php执行,如果你非要在mysql中使用,那么你就得在mysql中写函数了,不过不建议这么整,因为这种逻辑都是通用性的需要在php中一些地方调用的,你这样做就比较单一了
那大神建议怎么弄 求教
kyzy_yy_pm 2017-09-21
  • 打赏
  • 举报
回复
你password_hash是php实现的?你可以在php中将密码使用password_hash加密,将结果放在sql语句中使用php执行,如果你非要在mysql中使用,那么你就得在mysql中写函数了,不过不建议这么整,因为这种逻辑都是通用性的需要在php中一些地方调用的,你这样做就比较单一了

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧