首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于密码哈希的PHP算法

用于密码哈希的PHP算法
EN

Stack Overflow用户
提问于 2013-09-11 22:18:48
回答 2查看 112关注 0票数 0

我在学习密码加密算法。我知道bcrypt、scrypt和各种变量的存在,但我想在这个问题上为自己辩护,这就是为什么我在PHP中想出了这样的算法:

代码语言:javascript
复制
$secret = md5( uniqid( mt_rand(), true ) ); // Length is 32
$passwd = 'qwert123';
$hash = $secret . hash( 'sha256', $secret + $passwd );

由于秘密是随机确定的,并在密码哈希前面添加,所以我可以像下面这样验证密码输入:

代码语言:javascript
复制
$secret = substr( $hash_from_db, 0, 32 );
$hash_from_db === $secret . hash( 'sha256', $secret + $input_from_user );

您对这个实现有什么看法?我很想收到一些关于它的反馈。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-11 22:39:47

如果使用PHP5> 5.5,则可以使用新的password_hash()函数。

PHP的旧版本有兼容性函数--这里有一个:compat/blob/master/lib/password.php

票数 2
EN

Stack Overflow用户

发布于 2013-09-11 22:23:27

MD5被认为是加密中断的--不要将它用于安全性。

你只对salt+password进行了一次哈希。我花了大约10秒的时间找到一个工具,它将破解像这样的盐渍散列,使用字典查找。您的实现不应被认为是安全的,不受任何形式的坚决攻击。

要改善情况,可以考虑多次哈希;使用多个salt;部分地改变哈希算法;引入一些不可预测的东西。速度不是你的朋友--你花的时间越多,事情就越安全。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18752236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档