编码与安全指南
哈希、校验和与密码存储:用途与边界
区分偶然错误检测、摘要验证与密码存储,避免把普通哈希用于密码保护。
先明确目标
校验和适合检测偶然损坏,密码学摘要具有更强设计目标,但仍然没有秘密密钥。
攻击者若同时替换文件和发布的校验值,二者匹配也不能证明发布者身份。
对准确字节求摘要
额外换行会改变摘要,文本编码和 Unicode 归一化也可能让看起来相似的文本产生不同字节。
先用 abc 向量核对 SHA-256,再对文件本身计算,而非复制出来的文字表示。
SHA-256("abc")
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad密码不适合快速摘要
SHA-256 的快速特性不适合直接存储密码,密码哈希需要恰当的成本参数和盐。
应使用成熟的 Argon2id 或适合系统的替代方案;本站 bcrypt 是测试工具,不是账号后端。
明确旧算法边界
需要安全抗碰撞时不应使用 MD5 或 SHA-1,它们仍可能出现在旧校验值或兼容任务中。
消息认证应采用符合协议的 MAC 或签名,裸摘要不能说明数据由谁产生。