首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP加密方法

PHP加密方法
EN

Stack Overflow用户
提问于 2012-07-12 14:58:25
回答 2查看 363关注 0票数 3

我有一个加密方法,它的行为如下:密码的每个字符都经过一个方法,该方法获取该字符的ASCII值,并将字节向一边移位,然后向另一边移位,并返回以下内容:

$shifted_left.$original_char.$shifted_right

以下是对密码进行哈希处理之前的密码示例:

àp8Âa0æs9æs9îw;Þo7är9Èd2Îg3Þo7Êe2æs9Ðh4Êe2är9Êe2d2

在此之后,通过原始密码中的每个字符形成的结果字符串将使用BCrypt进行散列。用这些垃圾字符包围密码是提高了密码的强度,还是保护它们不会通过彩虹表/字典攻击而被破解?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-12 15:04:58

一般来说,它确实可以防止预先计算的彩虹表,因为你有一个相当独特的算法,可能没有人费心为它创建彩虹表。

但是,相同的密码仍然散列为相同的散列。因此,试图暴力破解所有密码散列的攻击者会更容易,因为他只需要为所有用户破解一次相同的密码。

因此,仍然建议您使用特定于用户的盐。如果你正在使用一个已经很强的散列算法的特定于用户的盐,那么你是否也进行位移位并不重要。

票数 3
EN

Stack Overflow用户

发布于 2012-07-12 15:50:11

如果攻击者能够控制数据库和代码,则添加加扰字符将毫无帮助(只是可以忽略不计的操作)。如果他只有没有代码注入(SQL-)的数据库,那么他将识别bcrypt散列,并且现在可以使用bcrypt暴力破解,但是由于混乱,没有任何弱密码。就像加密后的文本就是破解密码,所以字典是没有用的。

这是模糊的安全性,但只要代码未知,它就是有效的。在将bcrypt与唯一的盐一起使用之前,您可以通过添加固定的硬编码盐(密钥)来更容易地获得相同的效果。

备注:在bcrypt中使用的独特的盐将有助于防止彩虹表,而不是扰乱您的密码。一个大的彩虹表也可以包含随机的组合,比如你的乱密码。

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

https://stackoverflow.com/questions/11446491

复制
相关文章

相似问题

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