【问题标题】:Where is the SALT attached to the password, AFTER or BEFORE the password?在密码之后还是之前,SALT 附加在密码的什么位置?
【发布时间】:2011-08-30 18:13:03
【问题描述】:

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

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

例如,我的密码是:peter2011,然后是:

saltpeter2011peter2011salt ?

提前致谢。


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

encrypt_in_md5(saltpeter2011)encript_in_md5(peter2011salt)

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

提前致谢!

【问题讨论】:

  • 最好的来源是 glibc 源代码。

标签: linux cryptography passwords md5 sha


【解决方案1】:

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

【讨论】:

【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

    unix 很可能是$1$SALTpeter2011

    【讨论】:

    • 这是不正确的 - 有一个非常具体且非常一致的顺序,为了使密码文件在机器之间和软件版本之间具有可移植性,必须执行此操作。跨度>
    猜你喜欢
    • 2016-02-06
    • 2017-04-11
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多