编码与安全指南

哈希、校验和与密码存储:用途与边界

区分偶然错误检测、摘要验证与密码存储,避免把普通哈希用于密码保护。

Nav Tools ·

先明确目标

校验和适合检测偶然损坏,密码学摘要具有更强设计目标,但仍然没有秘密密钥。

攻击者若同时替换文件和发布的校验值,二者匹配也不能证明发布者身份。

对准确字节求摘要

额外换行会改变摘要,文本编码和 Unicode 归一化也可能让看起来相似的文本产生不同字节。

先用 abc 向量核对 SHA-256,再对文件本身计算,而非复制出来的文字表示。

SHA-256("abc")
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

密码不适合快速摘要

SHA-256 的快速特性不适合直接存储密码,密码哈希需要恰当的成本参数和盐。

应使用成熟的 Argon2id 或适合系统的替代方案;本站 bcrypt 是测试工具,不是账号后端。

明确旧算法边界

需要安全抗碰撞时不应使用 MD5 或 SHA-1,它们仍可能出现在旧校验值或兼容任务中。

消息认证应采用符合协议的 MAC 或签名,裸摘要不能说明数据由谁产生。

参考资料

← 编码与安全指南