标签: crc

我怎么能猜出校验和算法?

如果给出了给定的代码+ CRC字符串,有人知道如何找出CRC算法吗?

我有几个字符串由代码+匹配的CRC组成,但不知道如何计算有问题的CRC,以便我可以生成更多的代码字符串.以下是一些示例(16位代码+ 4位CRC):

0010101000011101 + 0000
0010101000011111 + 0001
1000110011101101 + 0001
0000000000000100 + 0010
0011100011001110 + 0011
1000110011101110 + 0100
0001011110101100 + 0100
0010101000011110 + 0101
0011100011001101 + 0110
0001011110101111 + 0111
0011100011001100 + 1001
0011100011001111 + 1010
0001011110101101 + 1011
0000000000001000 + 1011
0000111100001101 + 1100
0000000000001100 + 1100
1111111111111111 + 1101
1000110011101111 + 1101
1000110011101100 + 1110
0001011110101110 + 1110
1111111100001101 + 1110
0010101000011100 + 1111

这些代码来自RF(433MHz)发送器,如X10产品.

我不确定这是CRC还是它是什么,但至少它是以某种方式从这些代码字符串中计算出来的.

有人可以帮忙吗?

更新:

RE:找到规格我也认为是最好的解决方案,但由于这不是选项,我需要以某种方式强制校验和计算.

这是问题,我没有规格,我无法在任何地方获得它们.我已经尝试了几种不同的校验和计算方法而没有结果,没有办法比较输入字符串找出它们的共同点,这样就得到了算法

checksum crc

5
推荐指数
2
解决办法
4193
查看次数

CRC纠错库?

是否有CRC库,使用户不仅可以检测错误,还可以纠正错误?我正在寻找一个C/C++或Java库,理想情况下是开源的.

c++ java crc error-correction

5
推荐指数
2
解决办法
2934
查看次数

找出 RS232 数据的 CRC 或 CHECKSUM

我需要与 RS232 设备通信,我没有可用的规格或信息。

我发送一个 16 字节的命令并返回一个 16 字节的结果。最后一个字节看起来像某种 crc 或校验和,我试过使用这个http://miscel.dk/MiscEl/miscelCRCandChecksum.html没有运气。

任何人都可以对 crc/校验和算法进行逆向工程?以下是使用 RS-232 监控程序捕获的一些数据:

01 80 42 00 00 00 00 00 00 00 00 00 00 00 01 B3
01 80 42 00 00 00 00 00 00 00 00 00 00 00 02 51
01 80 42 00 00 00 00 00 00 00 00 00 00 00 03 0F
01 80 42 00 00 00 00 00 00 00 00 00 00 00 04 8C …
Run Code Online (Sandbox Code Playgroud)

checksum serial-port reverse-engineering crc

5
推荐指数
1
解决办法
7994
查看次数

将CRC值保存在文件中,而不更改实际的CRC校验和?

我将从我自己的类中定义的一些对象保存到File.(保存流数据).

这一切都很好,但我希望能够在File中存储该文件的CRC校验和.

然后,每当我的应用程序尝试打开文件时,它都可以读取内部存储的CRC值.

然后检查实际文件,如果文件的CRC与内部存储的CRC值匹配,我可以正常处理文件,否则显示错误消息,说文件无效.

我需要一些关于如何做到这一点的建议,我想我可以这样做:

  • 从我的应用程序中保存文件.
  • 计算保存文件的CRC.
  • 编辑存储CRC值的已保存文件.
  • 每当打开文件时,检查CRC是否与内部CRC值匹配.

问题是,只要在文件中更改了单个数据字节,就会导致CRC校验和完全不同 - 正如预期的那样.

delphi crc

5
推荐指数
3
解决办法
3585
查看次数

证明 CRC 的线性

我知道 CRC 是一个线性函数,这意味着 CRC(x xor y) = CRC(x) xor CRC(y),但我不知道如何证明 CRC 的这个属性。

有人有什么主意吗?

多谢!

crc

5
推荐指数
1
解决办法
1757
查看次数

替换少量字节时如何在大字节数组上重新计算 CRC32

我有一个问题,作为输入,我有一个大字节数组(通常> 1K 长度),它具有计算的 CRC32。我需要用不同的值替换一小部分数组,并重新计算 CRC。有没有一种有效的方法可以在不循环整个原始字节数组的情况下执行此操作?我怀疑在数学上可以将原始 CRC、要替换的字节、新字节作为输入,并使用循环大小只是要替换的字节数的算法来计算新的 CRC,但这超出了我的范围专业知识,因此,只是怀疑。谢谢,

c++ arrays crc

5
推荐指数
1
解决办法
2891
查看次数

Python gzip CRC校验失败

我有一个包含大量文本文件的文件夹。每一个都被压缩并重几个千兆字节。我写了一段代码来拆分每个 gzip 文件的内容:每个 gzip 文件都用 打开gzip,然后读取每个指定的行块并将其写入一个新的 gzip 文件。

这是文件中的代码file_compression.py

import sys, os, file_manipulation as fm
import gzip


def splitGzipFile(fileName, dest=None, chunkPerSplit=100, linePerChunk=4, file_field_separator="_", zfill=3
                  , verbose=False, file_permission=None, execute=True):
    """
    Splits a gz file into chunk files.
    :param fileName:
    :param chunkPerSplit:
    :param linePerChunk:
    :return:
    """
    absPath = os.path.abspath(fileName)
    baseName = os.path.basename(absPath)
    dirName = os.path.dirname(absPath)
    destFolder = dirName if dest is None else dest


    ## Compute file fields
    rawBaseName, extensions = baseName.split(os.extsep, 1)

    if not str(extensions).startswith("."):
        extensions = …
Run Code Online (Sandbox Code Playgroud)

python gzip crc python-multiprocessing

5
推荐指数
1
解决办法
5159
查看次数

检查 CRC 多项式的错误检测能力

我试图找出如何计算任意 CRC 多项式的错误检测能力。

我知道有各种错误检测功能可能(或可能不)适用于任意多项式:

  1. 检测单个位错误:所有 CRC 都可以执行此操作,因为这仅需要 CRC 宽度 >= 1。

  2. 突发错误检测:所有 CRC 都可以检测大小等于其宽度的突发错误。

  3. 检测奇数位错误:CRC 与多项式的偶数项(这意味着完整二进制多项式中 1 位的偶数)可以做到这一点。

  4. 检测随机位错误(取决于帧大小):我有一个现成的 C 算法,可以计算给定 HD 和多项式的最大帧大小。我没有完全理解它,但它有效。

让我们假设一个 16 位 CRC 多项式 x¹?+x¹²+x?+1 = 0x11021。该多项式可以:

  • 检测所有单位错误(与数据大小无关)。
  • 检测所有高达 16 位宽度的突发错误(与数据大小无关)。
  • 检测所有奇数个误码(因为它有 4 个多项式;与数据大小无关)。
  • 检测高达 32571 位数据大小的 3 位错误 (HD4)。

以上正确吗?

是否有额外的 CRC 错误检测功能?如果是,我如何检查(没有深入的数学知识)任意 CRC 多项式是否支持它们?

checksum crc error-detection hamming-distance polynomials

5
推荐指数
1
解决办法
9116
查看次数

如何避免在 Spark 中为文本文件生成元文件(.crc 文件)?

我使用 saveAsTextFile 方法以文本格式将 RDD 写入本地文件系统。在输出目录中,即使是 _SUCCESS 文件,每个零件文件也有一个 .crc 文件。

我只是在寻找避免生成这些元文件(尤其是 .crc)的 Hadoop/Spark 的任何内置功能或属性

我发现以下属性可以避免为 parquet 文件生成 _SUCCESS 文件和 .crc 文件,但为文本文件寻找类似的属性。

sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")

sc.hadoopConfiguration.set("parquet.enable.summary-metadata", "false")
Run Code Online (Sandbox Code Playgroud)

提前致谢。

hadoop crc apache-spark

5
推荐指数
0
解决办法
3858
查看次数

使用反射输入计算 CRC64 的最有效方法

我需要使用这个设置计算一个 CRC-64到这个美妙的网站:http : //www.sunshine2k.de/coding/javascript/crc/crc_js.html

如您所见,我需要“反射输入”,这意味着我需要反转任何字节的位顺序(有点烦人)。目前,我使用查找表(例如 0x55 -> 0xAA)实现了这一点,但我想知道是否有任何 CRC 属性可以用来提高效率。

这是我的代码(在 C 中):

static const unsigned long long CRC64_TABLE[256] = {
    0x0000000000000000, 0x42F0E1EBA9EA3693, 0x85E1C3D753D46D26, 0xC711223CFA3E5BB5, 0x493366450E42ECDF, 0x0BC387AEA7A8DA4C, 0xCCD2A5925D9681F9, 0x8E224479F47CB76A,
    0x9266CC8A1C85D9BE, 0xD0962D61B56FEF2D, 0x17870F5D4F51B498, 0x5577EEB6E6BB820B, 0xDB55AACF12C73561, 0x99A54B24BB2D03F2, 0x5EB4691841135847, 0x1C4488F3E8F96ED4,
    0x663D78FF90E185EF, 0x24CD9914390BB37C, 0xE3DCBB28C335E8C9, 0xA12C5AC36ADFDE5A, 0x2F0E1EBA9EA36930, 0x6DFEFF5137495FA3, 0xAAEFDD6DCD770416, 0xE81F3C86649D3285,
    0xF45BB4758C645C51, 0xB6AB559E258E6AC2, 0x71BA77A2DFB03177, 0x334A9649765A07E4, 0xBD68D2308226B08E, 0xFF9833DB2BCC861D, 0x388911E7D1F2DDA8, 0x7A79F00C7818EB3B,
    0xCC7AF1FF21C30BDE, 0x8E8A101488293D4D, 0x499B3228721766F8, 0x0B6BD3C3DBFD506B, 0x854997BA2F81E701, 0xC7B97651866BD192, 0x00A8546D7C558A27, 0x4258B586D5BFBCB4,
    0x5E1C3D753D46D260, 0x1CECDC9E94ACE4F3, 0xDBFDFEA26E92BF46, 0x990D1F49C77889D5, 0x172F5B3033043EBF, 0x55DFBADB9AEE082C, 0x92CE98E760D05399, 0xD03E790CC93A650A,
    0xAA478900B1228E31, 0xE8B768EB18C8B8A2, 0x2FA64AD7E2F6E317, 0x6D56AB3C4B1CD584, 0xE374EF45BF6062EE, 0xA1840EAE168A547D, 0x66952C92ECB40FC8, 0x2465CD79455E395B, …
Run Code Online (Sandbox Code Playgroud)

c performance crc32 crc crc64

5
推荐指数
1
解决办法
854
查看次数