Hash函数与多项式除法

Hash函数与多项式除法,hash,md5,sha1,checksum,crc,Hash,Md5,Sha1,Checksum,Crc,我知道CRC通过产生校验和来验证数据完整性,校验和是多项式长除法的结果。我听说散列值被称为散列校验和,所以我的问题是散列函数是否也使用某种多项式除法?我知道他们会将数据分解成块密码,所以我猜测散列函数会在多项式校验值和如何将其划分为不同的块之间创建某种关系。有人能告诉我我这里是否有点离谱吗?CRC是一个散列函数,但是有很多其他的方法来实现散列函数。其他方法通常不使用多项式除法,尽管有些方法使用CRC作为散列计算的一部分,以利用硬件CRC指令。大多数散列函数使用长而复杂的and、not、异或、整数

我知道CRC通过产生校验和来验证数据完整性,校验和是多项式长除法的结果。我听说散列值被称为散列校验和,所以我的问题是散列函数是否也使用某种多项式除法?我知道他们会将数据分解成块密码,所以我猜测散列函数会在多项式校验值和如何将其划分为不同的块之间创建某种关系。有人能告诉我我这里是否有点离谱吗?

CRC是一个散列函数,但是有很多其他的方法来实现散列函数。其他方法通常不使用多项式除法,尽管有些方法使用CRC作为散列计算的一部分,以利用硬件CRC指令。大多数散列函数使用长而复杂的and、not、异或、整数加法、乘法和模序列。

这似乎不是编程问题。你可能想问关于数学或密码学的问题。我投票结束这个问题,因为这是一个数学问题。我道歉。实际上我只是下载了这个应用程序,不知道我在哪里发布。版主可以移动这个话题吗?谢谢。这是一个合法的CS问题,OP只是问了一个错误的问题(即合并了几个概念)。我投票将这个问题作为离题题来结束,因为它已被交叉发布在一个更合适的Stack Exchange网站上。让我澄清一下:散列函数是单向压缩函数,是吗?在这方面,CRC可以被认为是一个哈希函数吗?不。如果你有办法解压结果,你只能调用“压缩”函数。因此,单向函数不能被视为压缩。散列函数只是将任意长度的消息映射为固定位数。因此,许多可能的消息必然会映射到相同的值。一个好的散列函数只需在消息中做一些小的更改,就可以给出非常不同的值,并将消息的散列值传播到所有可能的散列值上。我的印象是(并且已经得到学术界的指示)散列函数是压缩函数。例如,“单向压缩函数用于加密散列函数内部的Merkle–Damgård构造”。我在这里混淆概念吗?他们在这里混淆概念。这是“压缩”一词的可怕用法。然而,在搜索过程中,我发现哈希函数的短语“压缩函数”似乎得到了相对广泛的使用。因此,我们必须坚持下去。在任何情况下,哈希函数(即使您将其称为压缩函数)都不能用于数据压缩,因为数据无法恢复。这是函数的“单向”方面,花费了大量的精力来确保恢复原始数据实际上是不可能的,即使散列与数据长度相同。我理解,散列值不能很容易地反转(或解压缩)回原始摘要(如果有的话)。我想对术语压缩有不同的语义观点。不管怎样,我的问题是想知道哈希函数是否为了执行“压缩”,使用了多项式长除法的多次迭代来得到比原始数据短的值,我现在看到的情况并非如此。