什么是校验和错误?加密检测指南
校验和错误意味着数据未通过数学运算。在加密货币领域,这种运算的安全性远低于大多数用户想象的。以太坊的 EIP-55 大约每四千分之一的校验率就能检测出一个错误。比特币的 Base58Check 校验率要高出大约一千倍。Bech32 校验率则更高。然而,这些校验和都无法保护钱包免受攻击,而正是这种攻击在 2025 年导致个人钱包损失了 7.13 亿美元。这是因为恶意地址本身就是一个有效的、能够通过校验和的字符串,它存在于剪贴板或交易历史记录中。这就是校验和错误的本质,也是加密钱包显示校验和错误的原因,以及为什么校验和通过并不能证明钱包安全。
关于加密校验和错误的简要解答
校验和错误会告知用户某个地址、文件或助记词与钱包内置的完整性测试不符。钱包、交易所或安装程序拒绝执行操作,因为某个比特位翻转、某个字符输入错误或数据被篡改。在加密货币领域,该错误可以检测出拼写错误和意外损坏,但无法检测出攻击者控制的、输入完全正确的地址。2025 年有记录以来最大的钱包损失案例是 12 月份发生的 5000 万美元 USDT 损失,受害者复制了一个校验和完全正确的地址,而该地址实际上属于诈骗者。
校验和究竟是什么(以及它不是什么)
可以将校验和想象成一张小收据,它代表着一个更大的包裹,一个经过已知算法哈希处理、压缩成几个字节的数据块。发送方会附上原始校验和。接收方运行相同的算法,得到一个新的校验和,然后进行比较。匹配表示数据完整性得到保证。不匹配则表示数据在某处损坏:例如,RAM 中的某个位翻转、下载提前终止或输入错误字符。钱包和安装程序会将这种不匹配标记为校验和错误。计算出的校验和值与附加到原始数据(发送方发布的存储值)的预期值不匹配。由于基本的错误检测和完整性检查都已触发,因此没有遗漏任何数据错误。
从机制上讲,经典的校验和是算术运算,而非密码学。最简单的版本将数据分割成单词,然后进行反码加法运算(即1988年互联网TCP/IP校验和中使用的“反码”技巧)。稍微复杂一些的还有纵向奇偶校验、弗莱彻算法和循环冗余校验(CRC),它们彼此之间关系密切。循环冗余校验速度快,对传输错误非常有效。对于现代文件完整性,主流选择是Adler-32(速度快,不使用密码学)或MD5或SHA(速度较慢,但安全性更高)。大多数用户实际使用诸如`sha256sum`、`md5sum`和HashCheck`之类的软件工具来进行校验。
这就是界限所在。校验和可以证明数据在字节级别上没有被意外损坏或篡改,仅此而已。它无法证明数据的创建者。SHA-256 是一种加密哈希算法,比 CRC 校验码强得多。但它仍然无法证明作者身份;要证明作者身份,发布者需要使用私钥对哈希值进行签名。加密货币用户经常将这两者混淆。“地址通过了校验和验证”并不等同于“地址属于正确的人”。任何人都可以生成有效的以太坊或比特币地址。只有私钥持有者才能控制资金。校验和验证确认地址格式正确。至于它指向谁的钱包?这是另一个问题,需要不同的答案。

加密校验和算法的工作原理:EIP-55、Base58Check、Bech32
零售加密货币领域主要由三种真实方案主导,每种方案的设计重点都不同。
EIP-55是以太坊的混合大小写校验和方案。Vitalik Buterin 和 Alex Van de Sande 于 2016 年 1 月 14 日提出该方案。其工作原理是将地址转换为小写,使用 Keccak-256 算法对小写字符串进行哈希运算,然后根据哈希值的位数将十六进制字母(A-F)重新大写。一个典型的地址中只有 15 个十六进制字母可以进行大小写转换,因此该方案大约有 15 个有效的校验位。EIP-1191 于 2018 年 3 月提出,它扩展了 EIP-55,加入了链 ID,从而避免以太坊和分叉链(例如 Rootstock)上的地址校验和冲突。
Base58Check是比特币的传统校验方案。它会在编码地址的末尾附加一个 4 字节的校验和,该校验和由版本字节和有效载荷的双重 SHA-256 校验和的前 4 个字节计算得出。P2PKH 地址的前缀“1”对应于版本字节 0x00;P2SH 地址的前缀“3”对应于版本字节 0x05。Base58 字母表本身会省略视觉上容易混淆的 0、O、I 和 l。Base58Check 的校验和逻辑实现起来很简单,只需调用一次 SHA-256 算法,然后进行 4 字节的比较即可。
Bech32 (BIP-173)是 Pieter Wuille 和 Greg Maxwell 于 2017 年提出的隔离见证 (SegWit) 地址方案。其 6 个字符的 BCH 代码保证能够检测到影响最多四个字符的任何错误,并将更长字符的损坏的未检测错误率保持在十亿分之一以下。2020 年的一项巧妙发现(在最后一个“p”之前插入或删除一个“q”可以保留校验和)促成了 BIP-350 Bech32m 的诞生,Taproot(见证版本 1)目前就使用了该方案。
| 方案 | 年 | 地址示例 | 检查尺寸 | 典型的拼写错误检测 |
|---|---|---|---|---|
| EIP-55 / EIP-1191 | 2016/2018 | `0xAbCd...EfGh` | 约 15 比特 | 约99.97%(四千次失误中仅有一次失误) |
| Base58Check (P2PKH) | 2009 | `1A1zP1...` | 32 位 | 约99.99999998% |
| Base58Check (P2SH) | 2012 | `3J98t1...` | 32 位 | 约99.99999998% |
| Bech32(SegWit v0) | 2017 | `bc1q...` | 约 30 比特 | 4 字符错误率≥99.9999999999% |
| Bech32m(主根) | 2020 | `bc1p...` | 约 30 比特 | 同样,修复了 qp 插入问题 |
表格中的数字是本文最重要的两组数字。请将它们视为设计预算,而不是安全保证。
为什么 EIP-55 只能检测出 4000 分之一的拼写错误?
EIP-55 规范明确列出了失败率:以太坊地址中随机拼写错误通过校验和的概率为 0.0247%,约合 1/4049。这并非漏洞,而是 15 位有效校验位所能提供的保障。该方案是 2016 年的改进版本,旨在向后兼容现有的 40 位十六进制地址格式。兼容性牺牲了检测强度。
对于实际的钱包流程来说,这通常没问题。用户输入或粘贴地址一次,一旦不小心,极有可能被检测到。但如果用户连续粘贴同一个被篡改的地址十次,每次都能通过校验和,因为地址本身是有效的。以太坊地址校验和与比特币的 Base58Check 相比存在千倍差距,而进一步升级到 Bech32 则更难,这正是为什么优秀的钱包用户体验会将以太坊地址验证视为用户的责任,而不是协议的责任。
加密之外的校验和错误:WinRAR、BIOS、固件、硬盘
大多数在谷歌搜索“校验和错误”的人都不是加密货币用户。他们可能正在对着WinRAR发呆,或者电脑启动卡住,又或者NAS设备出现故障。用词相同,但情况却截然不同。
WinRAR 是经典的解压缩软件。你下载了一个 .rar 文件,解压后,会弹出 CRC 校验错误提示。压缩文件已损坏。通常原因都很常见:下载中断、Wi-Fi 连接不稳定、磁盘存在坏扇区,或者偶尔会有恶意软件在传输过程中修改了文件。重新从源头下载。运行 CHKDSK 检查磁盘检查工具。如果确实需要保留文件内容,WinRAR 的“保留损坏文件”选项会提取部分内容。
PC启动时出现BIOS或CMOS校验和错误几乎总是由于主板上的CR2032纽扣电池没电造成的。有时,固件更新失败会损坏NVRAM。有时,用户拔掉了内存条,导致存储的硬件指纹不再匹配。更换电池,加载默认设置,机器即可启动。
当硬盘返回的数据块与存储的哈希值不匹配时,ZFS 和 Btrfs 会抛出校验和错误。这些错误正是设计意图:将原本隐蔽的数据衰减最终暴露出来。
真正应该让加密货币用户感到不安的是硬件钱包的固件校验和错误。Trezor 的引导加载程序会在每次启动时重新验证固件签名。Ledger 的安全元件也会执行相同的操作。“无效签名”或 Ledger 在安装时显示的“未知错误 (0x6984)”实际上是设备在明确地告诉你,它检测到的固件与其根密钥不匹配。立即停止操作。拔掉设备。从你熟悉的供应商网址重新下载固件。任何忽略此警告的人都已经踏入了供应链攻击的大门。
校验和错误何时意味着篡改——以及何时并非如此。
本文的核心观点是:校验和能够很好地检测随机数据损坏,但对于故意选择有效地址的攻击者来说,校验和就无能为力了。
Chainalysis 的《加密货币犯罪报告》预测,2025 年加密货币盗窃总额将达到 34 亿美元,其中仅 Bybit 黑客事件就造成 15 亿美元损失。约 8 万名受害者在 15.8 万起事件中损失了 7.13 亿美元。这些损失几乎都不是因输入错误导致校验和无效造成的,因为交易所和钱包会在输入时自动拒绝此类错误。这些损失主要来自两种即使使用有效的校验和也无法阻止的攻击。
第一种攻击方式是地址投毒。攻击者使用一个新生成的地址发送一笔小额交易,该地址经过精心设计,与受害者常用交易对手的地址首尾几个字符相同。下次受害者从交易记录中复制地址时,伪造的地址就会出现在列表顶部。该地址的校验和完全有效。钱包显示为绿色。资金最终落入攻击者手中。卡内基梅隆大学引用Chainalysis的数据预测,到2025年,地址投毒攻击的尝试次数将达到2.7亿次,潜在受害者将达到1700万。2025年12月20日发生的一起事件中,一名交易员损失了5000万美元的USDT,而这起事件发生在受害者发送一笔小额测试交易约26分钟后;测试交易未能挽救其损失,因为被投毒的地址已被添加到交易记录中。
第二种是剪贴板劫持。像卡巴斯基实验室记录的 GitVenom 这样的恶意软件会悄无声息地将复制到剪贴板的任何加密货币地址替换为攻击者控制的地址。据估计,仅 GitVenom 一项,到 2024 年底,在巴西、土耳其和俄罗斯的受害者中造成的损失就高达约 48.5 万美元。同样,被替换的地址具有有效的校验和。钱包不会发出任何警报。关键数据(例如大额转账的收款地址)绕过了完整性保护层,因为它从未被篡改或损坏;它只是被替换成了同样有效的地址。
| 2025年袭击 | 机制 | 校验和阻止了它吗? |
|---|---|---|
| 地址投毒(5000万美元USDT,2025年12月20日) | 交易历史记录中的伪造相似地址 | 不——伪造的地址具有有效的 EIP-55 校验和。 |
| 剪贴板劫持程序(GitVenom,约 48.5 万美元) | 恶意软件替换复制的地址 | 否——替换地址有效 |
| ChatGPT主题的MEV机器人诈骗(涉案金额>30 ETH,受害者>100人) | 人工智能推荐的合约会耗尽钱包。 | 不——校验和并不能验证合同意图。 |
| 人工智能辅助诈骗普遍存在 | 比传统方案盈利4.5倍 | 不——这依赖于社会工程学,而不是纠正拼写错误。 |
绿色校验和表示地址格式正确,但这并不意味着该地址属于你。这一点是加密货币用户能从本文中记住的最重要的一点。
BIP-39 种子短语:为什么有效的单词仍然无法通过校验和
BIP-39 助记词也包含校验和,这常常让用户在恢复过程中感到意外。该方案将 SHA-256 校验和的最后几位与钱包熵结合,编码到助记词的最后一个单词中。一个 12 个单词的助记词只包含 4 位校验和,而一个 24 个单词的助记词则包含 8 位。对于 12 个单词的助记词,这意味着大约每 16 个随机选择的最后一个单词中只有一个能够通过验证。“我确信我的助记词是正确的,但钱包却拒绝了它”这种情况,绝大多数情况下是由于助记词前面的拼写错误,或者使用了 2048 个单词的 BIP-39 列表中错误的单词。
硬件方面的安全措施更为严格。Trezor 和 Ledger 每次启动时都会通过安全元件代码重新验证固件签名,而不是在主机端进行验证。签名不匹配会被视为篡改,固件将拒绝运行。这是正确的行为。任何从硬件钱包中看到固件校验和或签名错误的人都应该将其视为警报,而不是故障。

如何验证和修复校验和错误:最佳实践
检查清单很短,大多数钱包和交易所都一样。
以太坊地址。从交易对手的已验证渠道(其公开的个人资料,而非 Telegram 私信)复制。粘贴。等待钱包验证。发送 1 美元作为测试交易。等待确认。然后发送全部金额。Kraken 默认以 EIP-55 格式存储所有已保存的 ETH 地址。币安和 Coinbase 会在提交步骤中,在任何广播到达区块链之前,拒绝无效的校验和输入。MetaMask 默认使用 EIP-55 格式,并在手动编辑地址时显示警告;过去它也接受全小写字母,这一点多年来一直受到多个 GitHub 问题的诟病。
比特币地址。如果交易对手支持,请优先使用 Bech32 (`bc1...`) 格式,而非传统的 `1...` 和 `3...` 格式。Bech32 格式的错误检测能力显著更高,地址格式也更难被误读。
文件下载。钱包二进制文件、硬件钱包固件镜像、Linux ISO 文件。在本地计算 SHA-256 哈希值。将其与发布者签名的值进行比较,而不是与下载链接旁边打印的副本进行比较。控制下载页面的中间人攻击者可以篡改两者。务必备份任何您实际依赖的已验证文件。如果 U 盘或纸质打印件上保存着已知有效的副本,则日后检测错误会容易得多。
硬件钱包固件校验和或签名错误。请勿绕过此问题。请从供应商提供的官方 URL 重新下载。尝试更换数据线。尝试更换 USB 端口。重启 Ledger Live 或 Trezor Suite。如果错误仍然存在,请联系供应商支持。在第三方论坛搜索“修复 Ledger 0x6984”是攻击者的常见目标。
记住一句话:校验和通过证明数据没有意外损坏,但并不能证明数据就是你想要发送的目标数据。