自 己 验
现场核验 · 批次 2026-08-001
下面每一道都是刚才这一次页面加载时真跑出来的,不是写死的截图。 前四道在我们自己的机器上跑(本地账本 + 库 + 时间戳回执互相对账), 第五道要连公开镜像仓,点按钮现场发起——那一道才是无法临时伪造的支点。
材料在哪:公开核验镜像
封存原文、每条哈希、批次 Merkle 根、RFC 3161 时间戳回执与证书链,全部公开在 github.com/bai10420/car-news-ledger ↗。 复算脚本只依赖 Python 标准库,不装任何第三方包:
git clone https://github.com/bai10420/car-news-ledger.git cd car-news-ledger python scripts/seal_ledger.py data/ledger/2026-08-batch-001.md --verify
改 .md 里任意一个字再跑一次,它会当场炸给你看。
哈希口径
单条输入 = 下列五行按顺序用 \n 连接的 UTF-8 文本,每行去首尾空白:
编号 到期日 置信度 判定标准 正文
批次 Merkle 根 = 两两配对逐层收敛,父节点 = SHA-256(左节点 hex + 右节点 hex),某层为奇数个时最后一个与自身配对。 命令行复算:python scripts/seal_ledger.py <批次.md> --verify
为什么改一个字就藏不住
SHA-256 的雪崩效应:输入改动一个比特,输出平均有一半的比特翻面。 下面两行只差一个字符,指纹里不同的位会被标红。
时间戳验证:证明这话是那天写的
指纹只能证明正文没被改,证不了写的时间——所以每批 Merkle 根还会送到 freetsa.org 这样的第三方时间戳机构,按 RFC 3161 换回一份带签名的回执 (.tsr),随批次一起进上面那个公开镜像仓。 签名是他们签的,我们改不了、也伪造不出更早的时间。
以批次 2026-08-001 为例,回执在镜像仓的 data/ledger/2026-08-batch-001.tsr, 证书是 freetsa 官网公开的(files/tsa.crt、files/cacert.pem, 仓库 data/ledger/ 下也放了一份)。装了 openssl 就能自己验:
# 1. 先把这批的 Merkle 根算出来(不信页面上印的那串) python scripts/seal_ledger.py data/ledger/2026-08-batch-001.md --verify # 2. 拿这串根去验时间戳回执 openssl ts -verify -digest 11a6f08c7f2c6eb2373142db66ca812defd4bc16f65bc4b859c4c4ff17475dff \ -in data/ledger/2026-08-batch-001.tsr \ -CAfile data/ledger/cacert.pem -untrusted data/ledger/tsa.crt
输出 Verification: OK 就说明:这串根在 2026-07-27 13:04:53 UTC (时间戳编号 0x6871293)之前就已经存在。 把根改掉任何一位再验,会得到 message imprint mismatch——试一下比听我们说有用。