CRC校验工具

addCRC项目是一个C语言编写的工具,用于在文件中添加CRC校验码以确保数据传输和存储过程中的完整性。它支持多种CRC算法和灵活的校验位置设置,适用于嵌入式系统、网络通信等领域,能有效防止数据篡改和损坏。
摘要由CSDN通过智能技术生成

项目名称:addCRC

一、项目概述

addCRC项目旨在为文件提供强大的数据完整性校验功能。该项目通过添加CRC校验码到文件的不同位置,
确保文件在传输或存储过程中不被篡改或损坏。用户可以指定每固定数量的字节生成一个校验码,
当这个数量为0xffffffff时,会在文件末尾添加校验码。此外,项目支持灵活选择CRC算法,如crc_8、crc_16_IBM、crc_16_MODBUS、crc_32等,以满足不同场景的需求。

二、项目特点

  1. 灵活的校验码生成:用户可以指定每固定数量的字节生成一个CRC校验码,这有助于在文件的不同位置进行校验,提高数据完整性检测的准确性。

  2. 多种CRC算法支持:项目提供了多种常见的CRC算法,用户可以根据实际需要选择适合的算法进行校验码的计算。

  3. 端序模式选择:通过定义宏TARGET_PLATFORM_LITTLE_ENDIAN,用户可以选择校验码以小端模式或大端模式存储,以适应不同平台的需要。

  4. 纯C语言实现:项目使用纯C语言编写,具有良好的跨平台性和可移植性,可以复用在单片机代码中。

三、功能实现

  1. 文件读取与解析:项目能够读取指定文件,并根据用户设定的字节间隔,将文件内容划分为多个块。

  2. CRC校验码计算:针对每个文件块,项目使用选定的CRC算法计算校验码。计算过程中考虑了端序模式的选择,确保生成的校验码与目标平台的端序模式一致。

  3. 校验码插入:计算得到的校验码会被插入到文件的指定位置。例如被指定256时,代表每读取256个字节写入一个CRC校验码。当设定的字节间隔为0xffffffff时,校验码会被添加到文件的末尾。

  4. 文件保存:完成校验码插入后,项目将修改后的文件保存到指定位置,保存为新文件。

四、应用场景

addCRC项目适用于需要确保文件数据完整性的各种场景,如嵌入式系统、网络通信、数据存储等。通过为文件添加CRC校验码,项目可以提高数据传输的可靠性,并在数据损坏或篡改时及时发现并处理。

五、注意事项

  1. 在使用项目时,请确保所选CRC算法与接收端一致,以保证校验的正确性。

  2. 当将项目复用到单片机代码时,请确保单片机的内存和计算能力满足项目的需求。

  3. 在实际使用中,建议根据具体需求对项目进行必要的测试和优化,以确保其稳定性和性能。

六、项目结构

add-crc
|-- CMakeLists.txt  项目文件
|-- LICENSE         许可证
|-- README.en.md    英文readme
|-- README.md       中文readme
|-- app             应用
|-- bin             编译项目产生的.exe在这个文件夹
|-- binAddCrcConfig.h.in    配置文件,用于产生版本号
|-- build           构建项目产生的文件都在这
`-- component       CRC组件

七、安装教程

(先决条件:gcc、cmake

  1. 请确保所选CRC算法与接收端一致,默认的CRC算法为crc_16_MODBUS,如需更改算法,请修改main.c大约位于104行的crcCheck(&crc_16_MODBUS, read_buf,read_return,&crc_value,sizeof(crc_16_MODBUS));函数,
    函数的第一个参数以及第五个参数须保持一致。
  2. 删除build文件夹下的所有文件
  3. build文件夹下打开终端,选择构建项目类型。因为我的编译套件为MinGW,因此在终端中输入命令cmake -G"MinGW Makefiles" ..

可用的构建类型有以下几种:

* Visual Studio 17 2022        = Generates Visual Studio 2022 project files.
                                 Use -A option to specify architecture.
  Visual Studio 16 2019        = Generates Visual Studio 2019 project files.
                                 Use -A option to specify architecture.
  Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 12 2013 [arch] = Deprecated.  Generates Visual Studio 2013
                                 project files.  Optional [arch] can be
                                 "Win64" or "ARM".
  Visual Studio 9 2008 [arch]  = Deprecated.  Generates Visual Studio 2008
                                 project files.  Optional [arch] can be
                                 "Win64" or "IA64".
  Borland Makefiles            = Generates Borland makefiles.
  NMake Makefiles              = Generates NMake makefiles.
  NMake Makefiles JOM          = Generates JOM makefiles.
  MSYS Makefiles               = Generates MSYS makefiles.
  MinGW Makefiles              = Generates a make file for use with
                                 mingw32-make.
  Green Hills MULTI            = Generates Green Hills MULTI files
                                 (experimental, work-in-progress).
  Unix Makefiles               = Generates standard UNIX makefiles.
  Ninja                        = Generates build.ninja files.
  Ninja Multi-Config           = Generates build-<Config>.ninja files.
  Watcom WMake                 = Generates Watcom WMake makefiles.
  CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files
                                 (deprecated).
  CodeBlocks - NMake Makefiles = Generates CodeBlocks project files
                                 (deprecated).
  CodeBlocks - NMake Makefiles JOM
                               = Generates CodeBlocks project files
                                 (deprecated).
  CodeBlocks - Ninja           = Generates CodeBlocks project files
                                 (deprecated).
  CodeBlocks - Unix Makefiles  = Generates CodeBlocks project files
                                 (deprecated).
  CodeLite - MinGW Makefiles   = Generates CodeLite project files
                                 (deprecated).
  CodeLite - NMake Makefiles   = Generates CodeLite project files
                                 (deprecated).
  CodeLite - Ninja             = Generates CodeLite project files
                                 (deprecated).
  CodeLite - Unix Makefiles    = Generates CodeLite project files
                                 (deprecated).
  Eclipse CDT4 - NMake Makefiles
                               = Generates Eclipse CDT 4.0 project files
                                 (deprecated).
  Eclipse CDT4 - MinGW Makefiles
                               = Generates Eclipse CDT 4.0 project files
                                 (deprecated).
  Eclipse CDT4 - Ninja         = Generates Eclipse CDT 4.0 project files
                                 (deprecated).
  Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files
                                 (deprecated).
  Kate - MinGW Makefiles       = Generates Kate project files (deprecated).
  Kate - NMake Makefiles       = Generates Kate project files (deprecated).
  Kate - Ninja                 = Generates Kate project files (deprecated).
  Kate - Ninja Multi-Config    = Generates Kate project files (deprecated).
  Kate - Unix Makefiles        = Generates Kate project files (deprecated).
  Sublime Text 2 - MinGW Makefiles
                               = Generates Sublime Text 2 project files
                                 (deprecated).
  Sublime Text 2 - NMake Makefiles
                               = Generates Sublime Text 2 project files
                                 (deprecated).
  Sublime Text 2 - Ninja       = Generates Sublime Text 2 project files
                                 (deprecated).
  Sublime Text 2 - Unix Makefiles
                               = Generates Sublime Text 2 project files
                                 (deprecated).

  1. 编译项目,在终端中输入make,执行结果如下:
[ 25%] Building C object component/crc/CMakeFiles/CRC.dir/CRC.c.obj
[ 50%] Linking C static library ..\..\lib\libCRC.a
[ 50%] Built target CRC
[ 75%] Building C object app/CMakeFiles/addCRC.dir/main.c.obj
[100%] Linking C executable D:\Users\admin\Desktop\add-crc\bin\addCRC.exe
[100%] Built target addCRC

产生的addCRC.exe保存在bin文件夹下

八、使用方法

./addCRC.exe 输入文件 输出文件 每固定数量字节写入一个CRC

实例:

  1. 输入a.bin 输出aout.bin 每读取256字节写入一个CRC
./addCRC.exe a.bin aout.bin 256

计算结果:

version:0.1.0 Release
addr:0000000000 ~ 0x000000ff    CRC:0xedff
addr:0x00000102 ~ 0x00000201    CRC:0xb4c8
addr:0x00000204 ~ 0x00000303    CRC:0x4333
addr:0x00000306 ~ 0x00000405    CRC:0x3f45
addr:0x00000408 ~ 0x00000507    CRC:0x6e69
addr:0x0000050a ~ 0x00000609    CRC:0x0b82
addr:0x0000060c ~ 0x0000070b    CRC:0x93eb
addr:0x0000070e ~ 0x0000080d    CRC:0x0445
addr:0x00000810 ~ 0x0000090f    CRC:0x4fa7
addr:0x00000912 ~ 0x00000a11    CRC:0x2eb2
addr:0x00000a14 ~ 0x00000b13    CRC:0x7090
addr:0x00000b16 ~ 0x00000c15    CRC:0x20c3
addr:0x00000c18 ~ 0x00000d17    CRC:0x4c55
addr:0x00000d1a ~ 0x00000e19    CRC:0xb99d
addr:0x00000e1c ~ 0x00000f1b    CRC:0xeaa3
addr:0x00000f1e ~ 0x0000101d    CRC:0x4f6d
addr:0x00001020 ~ 0x0000111f    CRC:0x5cc8
addr:0x00001122 ~ 0x00001221    CRC:0x26ff
addr:0x00001224 ~ 0x00001323    CRC:0x6886
addr:0x00001326 ~ 0x00001425    CRC:0x25ed
addr:0x00001428 ~ 0x00001527    CRC:0xd0bc
addr:0x0000152a ~ 0x00001629    CRC:0xc516
addr:0x0000162c ~ 0x0000172b    CRC:0xee0c
addr:0x0000172e ~ 0x0000182d    CRC:0x15b0
addr:0x00001830 ~ 0x0000192f    CRC:0xd195
addr:0x00001932 ~ 0x00001a31    CRC:0xe7aa
addr:0x00001a34 ~ 0x00001b33    CRC:0x3d17
addr:0x00001b36 ~ 0x00001c35    CRC:0x5461
addr:0x00001c38 ~ 0x00001d37    CRC:0x9a93
addr:0x00001d3a ~ 0x00001e39    CRC:0x4ca6
addr:0x00001e3c ~ 0x00001f3b    CRC:0xe2f3
addr:0x00001f3e ~ 0x0000203d    CRC:0xb71e
addr:0x00002040 ~ 0x0000213f    CRC:0x90da
addr:0x00002142 ~ 0x00002241    CRC:0xd603
addr:0x00002244 ~ 0x00002343    CRC:0x254c
addr:0x00002346 ~ 0x00002445    CRC:0xafe8
addr:0x00002448 ~ 0x00002547    CRC:0x427b
addr:0x0000254a ~ 0x00002649    CRC:0x1ea5
addr:0x0000264c ~ 0x0000274b    CRC:0x60f8
addr:0x0000274e ~ 0x0000284d    CRC:0x5057
addr:0x00002850 ~ 0x0000294f    CRC:0xf135
addr:0x00002952 ~ 0x00002a51    CRC:0xc7a4
addr:0x00002a54 ~ 0x00002b53    CRC:0x9b53
addr:0x00002b56 ~ 0x00002c55    CRC:0x9d11
addr:0x00002c58 ~ 0x00002d57    CRC:0xc432
addr:0x00002d5a ~ 0x00002e59    CRC:0xc4d6
addr:0x00002e5c ~ 0x00002f5b    CRC:0xef52
addr:0x00002f5e ~ 0x0000305d    CRC:0x37b4
addr:0x00003060 ~ 0x0000315f    CRC:0x2e72
addr:0x00003162 ~ 0x00003261    CRC:0xfebd
addr:0x00003264 ~ 0x00003363    CRC:0x8fcb
addr:0x00003366 ~ 0x00003465    CRC:0x1ca0
addr:0x00003468 ~ 0x00003567    CRC:0x3691
addr:0x0000356a ~ 0x00003669    CRC:0xa513
addr:0x0000366c ~ 0x0000376b    CRC:0xc24a
addr:0x0000376e ~ 0x0000386d    CRC:0x6166
addr:0x00003870 ~ 0x0000396f    CRC:0xd22b
addr:0x00003972 ~ 0x00003a71    CRC:0x04b6
addr:0x00003a74 ~ 0x00003b73    CRC:0xc9e5
addr:0x00003b76 ~ 0x00003c75    CRC:0xf391
addr:0x00003c78 ~ 0x00003d77    CRC:0x2ebd
addr:0x00003d7a ~ 0x00003e79    CRC:0x0481
addr:0x00003e7c ~ 0x00003f7b    CRC:0x1334
addr:0x00003f7e ~ 0x0000407d    CRC:0x128f
addr:0x00004080 ~ 0x0000417f    CRC:0xbf25
addr:0x00004182 ~ 0x00004281    CRC:0x870f
addr:0x00004284 ~ 0x00004383    CRC:0x53d1
addr:0x00004386 ~ 0x00004485    CRC:0x09bb
addr:0x00004488 ~ 0x00004587    CRC:0x9787
addr:0x0000458a ~ 0x00004689    CRC:0x7296
addr:0x0000468c ~ 0x0000478b    CRC:0xd2c3
addr:0x0000478e ~ 0x0000488d    CRC:0x090f
addr:0x00004890 ~ 0x0000498f    CRC:0x6415
addr:0x00004992 ~ 0x000049c5    CRC:0xf1a1
add crc ok
  1. 输入a.bin 输出b.bin 为整个文件添加一个CRC校验码,添加位置为文件尾

./addCRC.exe a.bin b.bin 0xffffffff

计算结果:

version:0.1.0 Release
addr:0000000000 ~ 0x00004933    CRC:0xf70f
add crc ok

项目链接 https://gitee.com/sharkisyou/add-crc

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: bin和hex crc校验工具是用于文件校验的工具。比如在传输文件时,为了保证文件的完整性,常常需要使用crc校验工具进行校验。而bin和hex crc校验工具能够分别对二进制和十六进制文件进行校验。 bin crc校验工具通常采用常见的crc校验算法,如crc32和crc16等。用户只需要将需要校验的二进制文件传入程序中,程序会自动计算出校验码,并将校验码与文件中的校验码进行比较,从而判断文件是否完整。 hex crc校验工具则是将十六进制文件转换成二进制文件后进行校验。用户需要先将十六进制文件转换成二进制文件,然后再通过crc校验工具计算出校验码。校验码同样会与文件中的校验码进行比较,以判断文件是否完整。 总的来说,bin和hex crc校验工具是非常实用的文件校验工具。在文件传输中使用,能够有效保证文件的完整性和准确性,从而保障数据的安全性。 ### 回答2: bin和hex crc校验工具是用于验证数据完整性的工具crc校验利用数据的循环冗余检测码,对数据进行校验和计算,以此来检测数据在传输过程中是否出现错误或丢失。 bin和hex crc校验工具的使用方法相似,只是数据的表示方式不同。bin指的是二进制形式,而hex是十六进制。在使用crc校验工具之前,需要先确定所要校验的数据文件或数据流的校验规则和值,这一般是由数据的生产者或通信协议规定的。常用的crc校验算法有CRC-16、CRC-32等,用户可以根据需要选择合适的算法。 在使用crc校验工具时,用户只需将数据输入工具中,并指定所选择的算法和规则,工具会自动计算出校验和,并与预期结果进行比较。如果两者相等,则说明数据正确,否则就说明数据出现了错误或丢失,需要进行修复或重新发送。 总之,bin和hex crc校验工具是提高数据传输可靠性的重要工具,能够有效避免数据传输过程中的错误和丢失,保证数据的准确性和完整性。 ### 回答3: bin和hex是计算机文件的两种常见格式。bin是二进制格式,即文件以0和1的二进制数据表示;hex是十六进制格式,即文件以16进制数据表示。 crc校验是计算机通信中常见的一种校验方法,它能够检测到数据传输过程中的错误。crc校验通常通过使用一种算法来计算数据的校验值,并将其添加到传输数据的末尾。接收方在接收到数据后,使用同样的算法计算接收数据的校验值,并将其与传输过来的校验值进行比较。如果两个校验值一致,则说明数据正确地传输了;反之则说明数据传输过程中出现了错误。 bin和hex crc校验工具就是针对不同格式的文件(bin和hex)进行校验的工具。使用这种工具可以快速计算数据的校验值,并验证数据的正确性。这类工具通常提供简单的操作界面,用户只需要将需要校验的文件导入工具中,工具就会自动计算出校验值,并显示校验结果。在进行数据传输时,发送方可以使用这种工具计算出校验值并附在数据末尾,接收方则可以使用同样的工具对接收到的数据进行校验。这样就能够确保数据的准确传输,避免数据错误导致的不必要麻烦和损失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值