在LZAV压缩库API中,有一个关于解压缩函数的注释,建议存储原始(未压缩)数据的哈希值,以便解压缩后您可以检查它的有效性(即解压缩过程是否成功) ):
请注意,虽然该函数确实执行检查以避免 OOB 内存 访问,并检查解压数据长度是否相等,这是 不能严格保证有效减压。在情况下,当 数据存储在长期存储中,没有嵌入数据完整性 机制(例如,没有 RAID 1 保证的数据库、二进制文件 没有数字签名或 CRC 的容器),然后是校验和(哈希) 应存储原始未压缩数据,然后进行评估 与解压后的数据相对照。另外,还有一个单独的校验和 应用程序定义的标头(哈希),其中包含未压缩的和 压缩数据长度,解压前应检查。 A 高性能“komihash”哈希函数可用于获取哈希 数据的价值。
如果我检查存储压缩数据的字节的完整性/相同性,我是否能够放弃未压缩数据的散列?例如,我压缩一些数据,然后与其他数据一起保存到存储中。如果我检查所存储数据的有效性,那么我可以确保传递给解压缩器的输入与来自压缩器的输入相同。如果解压器的输入与压缩器的输出相同,那么就保证解压正确,对吗?
是的,保证解压原始输入,如果压缩代码和解压代码没有任何错误。
我有信任问题,所以我更愿意保留完整性检查。