8

当您使用 GNU/Linux 时,密码(主要)被加密在 MD5 和 SHA 中
。操作系统在加密之前将 SALT 附加到该密码以避免字典攻击。

我的问题是,SO 在密码之前或之后在哪里附加 SALT?

例如,我的密码是:peter2011在加密之前,它是:

saltpeter2011还是peter2011salt

提前致谢。


我不知道你是否误解了我的问题,但我不是在问 Linux 如何存储他的密码,我是在问如何加密它,我的意思是:

encrypt_in_md5(saltpeter2011)encript_in_md5(peter2011salt)

我知道 /etc/shadow 文件存储为 $salt&encripted_pa​​ssword

提前致谢!

4

3 回答 3

5

它比这更复杂一些,涉及多轮附加和散列。最好只使用crypt(3)并让系统处理它。

于 2011-05-22T21:33:41.307 回答
4

它并不像你想象的那么简单。

首先,使用盐的方式取决于所使用的散列函数。你提到了MD5,所以我们就拿这个案子。

您必须在 glibc 源代码中查看 glibc/crypt/md5-crypt.c 文件以获取答案。

在那里你会发现,它首先执行 md5(KEY$1$SALT) 之类的操作,然后执行 md5(KEYSALTKEY),然后以一种奇怪的方式将它们混合在一起。然后它会根据密钥、盐和之前的结果进行一些更奇怪的迭代,最后在更多的字节混合之后你就完成了。

于 2011-05-22T23:59:10.327 回答
-3

如果您正在实施该系统,则完全取决于您。一点都不重要。

很可能 unix 可以$1$SALTpeter2011

于 2011-05-22T21:31:51.160 回答