
防伪存证首先要明确验证对象
区块链防伪存证的基础,是将需要核验的数据与可追溯的记录关联起来。理解这一用途时,应分别考察文件内容是否发生变化、相关记录是否进入区块历史,以及原始内容本身是否真实。哈希和区块验证可以为前两类问题提供技术依据,但不能单独证明文件中的陈述或实物来源真实。
密码学摘要:用于比对内容
MDN 对 digest() 的说明指出,哈希函数可把不同长度的输入转换为固定长度的摘要。密码学摘要要求具备抗碰撞性,即难以找到摘要相同的两个不同输入;SHA-256 是该接口支持的算法之一。

用于存证核验时,可以对待核验文件重新计算摘要,与已记录的摘要比较。比较成立的条件是采用相同算法和相同字节处理规则。文字看起来一致,编码、换行或文件元数据的差异仍可能改变输入。摘要也不能替代原件保存,原件丢失后无法靠摘要还原内容。

区块与共识:让记录形成有序历史
以太坊的区块说明介绍了交易批量进入区块、区块引用前一区块哈希的结构。验证节点按照协议检查交易及状态变化,通过共识维护共同认可的历史。历史数据变化会影响相关哈希关联,因此不能在保持原有关联有效的情况下直接改写内容。
这里涉及三个层次:交易承载记录,区块组织顺序,共识决定网络接受哪段历史。判断存证结果时,应关注记录是否实际被纳入并达到相应网络的确认条件,不能仅凭提交请求就认定存证完成。具体确认规则取决于所用网络。
适用条件与常见问题
只有哈希就能证明作者身份吗?不能。摘要来自输入内容,本身不说明是谁创建或提交了文件。区块时间能证明文件准确的创作时间吗?也不能直接等同;记录进入区块的时间与文件实际形成的时间是不同概念。
浏览器可以计算摘要吗?MDN 介绍的 SubtleCrypto.digest() 可承担这项工作,但需要安全上下文,并且不支持流式输入,需要先把完整输入读入内存。涉及大文件时,内存容量会成为适用条件。
实际理解防伪存证,应把内容比对、链上记录核验与来源真实性核实分别看待。原件能否持续取得、摘要计算规则是否明确、记录能否追溯,都会影响后续核验是否有效。