马上注册,免费下载更多dz插件网资源。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
discuz X3.5密码使用php内置函数password_hash() ,即可获得兼容Discuz系统的新密码。新密码的hash是一体的一个字符串,没有单独的salt,因此salt字段留空即可。
如果你想使用其他编程语言生成兼容Discuz系统的密码:请自行查询所使用语言的相关算法实现。由于Discuz采用的标准符合国际通用的密码存储最佳实践,因此跟标准的实现大多都是兼容的。
默认算法:bcrypt,也可以查询blowfish,也是它。
高版本php用户可选使用更安全的argon2i算法,但就不能再降级php了。
顺带一提,如果你实在就是做不到用新方法手动生成密码的话,这个是不强求的。
因为Discuz即便引入了新的更安全的密码保存规则,并不代表就直接放弃了对旧存储规则的兼容。
由于必须知道密码原文才有可能将其重新编码成新规则,对老规则的兼容还将持续存在很长很长的一段时间,否则老用户就没法登录了。
这意味着哪怕你仍然采用老方法在数据库里强行重置用户的密码,也是没问题的,只是会让系统多重置一次。
非对称加密函数password_hash()转换为Md5()的思路进行破解discuz X3.5密码:
md5+salt 直接使用MD5()加密,是很容易被破解的(犹记得曾经忘记密码,到处找免费的破解网站...),但加上salt想要破解就难上很多了,即使你获得salt和最终密文,想要破解也是十分困难的。 如何实现md5+salt?很简单,密码连接一个随机字符串即可。
function md5_salt_hash($pass)
{
$salt = ‘5f9901fc60b7669’; //定义一个salt值,最好足够长,或者随机
return md5($pass, $salt);
}
password_hash PHP5.5引入了Password Hashing函数,内核自带无需安装扩展,使用起来十分方便。它属于Password Hashing API(创建和校验哈希密码)函数之一。 Password Hashing API包含4个函数: password_hash()、password_verify()、password_get_info()、password_needs_rehash()。 string password_hash(string $password, integer $algo [, array $options ]) 参数: $password 密码 $algo 哈希算法 $options 选项 实例:
$pwd = "123456";
$hash = password_hash($pwd, PASSWORD_DEFAULT);
echo $hash;
上例输出结果类似:$$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a,并且刷新页面该哈希值也会不断的变化。
哈希值创建完毕,我们可以用password_verify()来校验密码是否和哈希值匹配。
boolean password_verify ( string $password , string $hash ) 它接收2个参数:密码和哈希值,并返回布尔值。检查之前生成的哈希值是否和密码匹配,代码:
if (password_verify($pwd,'$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a')) {
echo "密码正确";
} else {
echo "密码错误";
}
基本上使用以上这2个函数就能安全的创建和校验hash密码了。 总结
MD5+salt加密 可跨语言加密解密。 password_hash加密 只能通过php的password_verfiy校验。
©DZ插件网所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 网站部分内容来源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,得到更好的正版服务。 您在本站任何的赞助购买、下载、查阅、回复等行为等均表示接受并同意签订《DZ插件网免责声明协议》。 如有侵权请邮件与我们联系处理: discuzaddons@vip.qq.com 并出示相关证明以便删除。敬请谅解!
|