影子文件是否有加密密码?

seb*_*elk 6 password terminology shadow

man 5 shadow关于第二个字段是这样说的:

加密密码

今天是真的吗?我认为它应该说“散列密码”。我对么?

Gil*_*il' 9

不,影子文件不包含加密密码,在我见过的任何 Unix 变体上都不包含。这需要在某处使用加密密钥——它会在哪里?

甚至该crypt函数的原始版本实际上也是一个散列函数。它通过使用密码作为DES变体的密钥进行操作。的输出crypt是所有位为零的块的加密。虽然这使用加密函数作为实现的一部分,但该crypt操作不是加密操作,它是一个散列函数:一个函数的逆很难计算,因此很难找到产生相同输出的两个值。

在其局限性内,最初的基于 DES 的crypt实现遵循了良好密码散列函数的基本原则:不可逆函数、带和减速因子。考虑到当今的计算能力,使其不适合的是限制,而不是设计:密码中最多 8 个字符,总大小使其适合蛮力,盐太短,迭代次数太短。

由于crypt名称(由于crypt内部使用加密的事实),并且因为直到最近很少有人受过密码学教育,因此该crypt函数和其他环境中的等价物的许多文档将其描述为“密码加密”。但它实际上是一个密码哈希,而且一直都是。

现代系统使用基于更强大算法的密码散列函数。虽然其中一些算法被称为“MD5”、“SHA-256”和“SHA-512”,但散列计算并不是像 MD5(密码 + 盐)那样的东西,而是满足慢速要求的迭代散列(尽管常见的方法缺乏防止基于 GPU 加速的内存硬度)。

  • @Anthon 不。我是说,如果您使用密钥 Y 将某些数据 X 加密到 Z 中,则您并未加密 Y。 (4认同)
  • 您是说,如果您使用密钥 Y 将某些数据 X 加密到 Z 中并销毁 Y(以及可能的 X),那么 Z 不再是加密数据。由于您没有密钥而无法再解密某些内容并不会使已加密的内容不再被加密。 (2认同)

Lam*_*ert 6

man 5 shadow“加密密码”部分是指crypt(3)。如果您阅读该手册 ( man 3 crypt),您将看到可以使用作为当前使用的散列算法的两种传统 DES 加密密码。因此,“加密密码”并未完全涵盖该字段可能包含的内容是对的。更好的描述应该是“加密或散列密码”

  • @sebelk 是的,“加密”是一个根深蒂固但不正确的术语。 (2认同)