
RIPEMD-160与摘要
RIPEMD指一个哈希算法家族,理解区块链相关术语时,应关注具体名称RIPEMD-160。这里的160表示输出摘要的位数,相当于20字节,不是输入长度,也不直接代表安全强度。
哈希把输入数据映射为固定长度摘要。相同输入产生相同结果,适合用于数据匹配。它不提供解密功能,也不能仅凭一个摘要证明数据来自谁。
HASH160与公钥哈希
比特币中的HASH160表示先执行SHA-256,再对结果执行RIPEMD-160。它是组合运算,与单独使用RIPEMD-160有区别。OP_HASH160则是脚本中执行这项运算的操作码。
公钥哈希是对公钥字节进行哈希得到的结果。理解时需分清输入对象:公钥、公钥哈希和地址处于不同层次,不能把它们当作同一串数据。
P2PKH中的匹配与签名
Bitcoin Developer Guides的交易章节以P2PKH说明验证过程:花费者提供公钥和签名,脚本核对公钥哈希,并验证签名。传统P2PKH地址还包含版本信息和校验和,通过Base58编码表达。
哈希匹配回答的是“这份公钥是否对应输出指定的哈希”;签名验证回答的是“签名是否对相应交易数据有效”。两者承担不同任务,单独通过哈希匹配不足以获得花费授权。这一说明适用于P2PKH,不能推广为所有比特币输出类型的统一结构。
HMAC-RIPEMD-160-96中的数字
RFC 2857描述了IPsec的ESP和AH使用HMAC-RIPEMD-160-96的方式:以RIPEMD-160配合HMAC计算认证值,再取前96位用于认证字段。这里的160是完整认证值长度,96是截断后的长度。
HMAC引入共享秘密密钥,用于消息完整性和来源认证;其认证边界取决于哪些参与者掌握密钥。它与公钥哈希、数字签名各有用途,不能因为底层使用同一种哈希就相互替代。
常见理解误区与适用条件
摘要相同是否意味着原文必然相同?不意味着。固定长度摘要可能对应不同输入,这称为碰撞;抗碰撞性关注寻找这类输入的困难程度。
校验和能否代替签名?不能。地址校验和主要帮助发现输入错误,签名用于授权验证。旧规范中的安全描述也有时间和使用场景限制,不能直接当作算法当前安全状态或所有区块链系统安全性的结论。