哈希值(Hash)又称数字摘要,是将任意长度数据通过哈希函数映射为固定长度输出的一串字符。它是现代密码学、数据完整性校验、区块链技术的核心基石。
无论输入是1字节还是1GB,哈希值长度恒定。例如SHA-256始终输出256位(32字节)。
从哈希值无法还原原始数据,只能通过暴力枚举尝试匹配,保障密码存储安全。
找到两个不同输入产生相同哈希值在计算上极其困难(尤其是SHA-2/3系列)。
输入微变(如翻转1比特),输出哈希值约50%比特发生变化,毫无规律。
广泛用于文件校验,但碰撞漏洞已被公开,不推荐安全场景。
比特币及众多区块链标准,目前公认安全,无有效碰撞攻击。
新一代标准,基于Keccak算法,抗量子攻击潜力更优。
💡 此外还有 RIPEMD-160 (比特币地址)、BLAKE2 (高性能) 等算法。
系统不存储明文密码,而是存储密码的哈希值(加盐)。即使数据库泄露,攻击者也无法还原原始密码。
下载文件时提供官方哈希值,用户校验本地哈希是否一致,确保文件未被篡改或损坏。
每个区块包含前一区块的哈希值,形成不可篡改的链式结构。挖矿即寻找满足难度目标的区块哈希。
先对消息哈希,再用私钥加密哈希值。验证时解密哈希并与消息哈希比对,确认签名真实性。
严格来说哈希是单向函数,不能“解密”。但可通过彩虹表或暴力枚举尝试匹配。因此加盐(随机后缀)能大幅提高破解成本。
碰撞指两个不同输入产生相同哈希值。MD5和SHA-1已被证明存在有效碰撞攻击,可伪造数字签名或恶意文件。SHA-256目前无公开碰撞。
SHA-256安全性高,运算速度快,且拥有专用硬件(ASIC)支持,适合工作量证明(PoW)竞赛。同时256位输出提供足够的安全空间。
理论上必然存在碰撞(鸽巢原理)。但优秀哈希函数如SHA-256使得寻找碰撞需要天文数字级别的计算,实际不可行。
在终端使用 sha256sum 文件名 (Linux/Mac) 或 Get-FileHash 文件名 (PowerShell),比对官方提供的哈希字符串即可。
哈希不是加密(不可逆)。但可结合对称加密或HMAC(基于哈希的消息认证码)用于完整性验证和身份认证。
哈希值小贴士🔹 开发中优先使用SHA-256或SHA-3。
🔹 存储密码务必加盐 (bcrypt, argon2)。
🔹 区块链浏览器可查询交易哈希 (txid)。
在线工具推荐可使用 openssl、Python hashlib 或在线哈希计算器快速生成哈希值。注意敏感数据勿在第三方网页提交。