c++ - CRC-32C 传输文件的校验和

标签 c++ centos synchronization checksum crc32

我需要在多台机器之间同步一些文件,然后将它们与我的应用程序一起使用。我可能遇到的问题是文件尚未完全交付。为了解决这个问题,我想用 CRC-32C 算法对每个文件进行校验和。
在这里我有一个问题。 我如何为每个文件自己提供校验和 ?我有一个数据库可以告诉我何时尝试读取文件,因此首先将哈希写入数据库然后才使用我的应用程序计算交付文件的哈希是完全安全的。但就是感觉不对。什么是标准?同步文件时,您通常如何对文件执行校验和?

最佳答案

将 CRC 附加到文件中。然后,当您收到 n 个字节时,计算前 n-4 个字节的 CRC,并将其与最后四个字节进行比较。如果匹配,则很有可能在传输中没有错误或遗漏。然后删除最后四个字节。
为了进一步保证,您还可以将文件的长度附加到文件中,比如八个字节,并检查它。
(顺便说一句,CRC 不是校验和。它是 CRC。)

关于c++ - CRC-32C 传输文件的校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69177572/

相关文章:

c++ - 为什么使用 argc 和 argv 时没有出现段错误?

c++向日期添加或减去值

apache - 是否可以在 apache 服务器上使用带反向代理的负载平衡器?

mongodb - 在 Apache 服务器/Centos 8 上运行的 Flask 应用程序无法连接到 Mongodb Atlas

c++ - 让奴隶在MPI中互相等待

c++ - 模板类的自动内存池功能

c++ - 在浮点比较中选择 ULP 值

Mysql 5.6.10配置

c# - 从未同步的代码块调用了对象同步方法

WinForms 多线程问题