/etc/shadow中密码哈希字段强度取决于算法标识(如$6$为sha-512)、盐值长度与随机性、迭代轮数(如rounds=656000),三者共同提升暴力破解难度,但无法反映原始密码强弱。

理解 /etc/shadow 中加密哈希字段的关键,是看它是否包含现代算法、足够长的盐值、高迭代轮数——这三者共同决定离线暴力破解的难度。它不反映“密码本身强弱”,而是反映“即使密码较弱,系统是否让攻击者难以快速试出来”。
看算法标识:确认是否启用抗爆破的现代哈希
哈希字段以 $id$ 开头,id 决定底层算法强度:
-
$6$:SHA-512(当前主流默认,强) -
$5$:SHA-256(良好,但弱于 SHA-512) -
$y$:yescrypt(更新、更抗 GPU 破解,部分新发行版支持) -
$1$:MD5(已过时,不推荐) - 无
$开头(如纯 13 字符字符串):DES(极度脆弱,仅存在于极老系统)
只要看到 $6$ 或 $y$,说明系统启用了现代哈希机制,这是防破解的第一道坚实屏障。
看 salt 和 rounds:判断是否有效抵御彩虹表与加速攻击
完整哈希字段形如:$rounds=656000$NaQqalCk3$...,其中:
本文档主要讲述的是Android linux内核介绍;Android内核是基于Linux 2.6内核的(目前最新开发版本是2.6.31),它是一个增强内核版本,除了修改部分Bug外,它提供了用于支持Android平台的设备驱动,希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
-
rounds=656000表示哈希计算迭代 65.6 万次——这不是冗余,而是故意拖慢单次验证速度,使暴力尝试成本指数级上升;低于 50000 的 rounds 值已显不足 -
NaQqalCk3是随机生成的 salt(盐值),长度通常 8–16 字符;salt 越长、越随机,越能确保相同密码在不同账户中产生完全不同的哈希,彻底封死彩虹表攻击 - 若字段中缺失
rounds=(如$6$salt$hash),则使用系统默认轮数(多数发行版默认 5000+,可接受但非最优)
看哈希值长度和字符集:辅助验证格式合规性
SHA-512 哈希部分(salt 后面那一长串)应为:
- 长度约 86 个字符(Base64 编码后)
- 只含 Base64 字符集:
A–Z a–z 0–9 + /(不含=填充) - 若出现异常短(如 32 字符)、含非法符号(如
:、,)或全是*/!,说明密码被禁用、锁定或格式损坏,不参与强度评估
注意:该字段本身无法还原密码,也无法判断用户是否用了 “123456” 这样的弱口令——它只保证:就算用了弱口令,攻击者也得为每个猜测付出高昂计算代价。
不依赖字段内容,而依赖系统配置
真正影响防破解强度的,不只是 shadow 文件里“已经写好的这一行”,更是系统如何生成它:
- 密码策略由
/etc/login.defs中的ENCRYPT_METHOD和SHA_CRYPT_MIN_ROUNDS控制 - 新用户密码是否自动使用高 rounds,取决于
authconfig或pwconv配置,而非 shadow 文件能否手动编辑 - 定期运行
sudo authconfig --update(RHEL/CentOS)或检查passwd -S username输出,比肉眼读 shadow 更可靠










