这个哈希对安全性有优势吗?

Jas*_*son 3 php security hash sha1

有什么优势吗?

sha1(sha1(sha1($password. $salt)));
Run Code Online (Sandbox Code Playgroud)

基本上有多个sha1经文只有一个sha1

sha1($password. $salt);
Run Code Online (Sandbox Code Playgroud)

And*_*ore 9

不要,我再说一遍,不要试图通过做"特殊"的事情来使你的密码更安全.

首先,sha1(sha1(sha1($input)))只有副作用才能增加每次迭代的碰撞机会*.增加碰撞的机会是一件非常糟糕的事情.

为什么不相信由该领域的实际专家制作的图书馆,而不是亲自动手做自己的密码学?使用Portable PHP密码哈希框架.

PHPass实际上使用bcrypt,这是一种旨在防止彩虹表,字典和暴力攻击的算法.您可以使用多个轮次对其进行初始化:轮次越高,计算哈希值所需的时间越长.这样,如果处理能力增加,您可以创建更强的哈希值.


*第一次调用sha1()采取无限输入并创建一个2160输出.第二次迭代接受2160输入并创建一个x输出,其中x <= 2160.第三次迭代接受x输入并创建一个y输出,其中y <= x <= 2160.

为什么每次通话都会sha1()减少可能的输出量?因为后面的算法sha1()不是为哈希的一对一匹配而设计的.从理论上讲,如果你要散列每个可能的哈希,你肯定会发生冲突.