拉宾指纹
方案
给定一个n位消息m0,...,mn-1,我们将其视为在有限域GF(2)上的n-1次多项式。
然后,我们随机选择一个在GF(2)上的k次不可约多项式,我们将消息m的指纹定义为在GF(2)上除以的余数,它可以看作是一个k-1次多项式或k位数字。
应用
拉宾-卡普算法的许多实现,在内部是使用的拉宾指纹。
麻省理工学院的低带宽网络文件系统(LBFS)使用拉宾指纹来实现可变大小的抗移位块。[2]
其基本思想是,文件系统计算文件中每个块的加密哈希。为了节省客户端和服务器之间的传输,它们比较其校验和,只传输校验和不同的块。但是这种方案有一个问题,就是如果使用固定大小(例如4KB)的块,那么在文件开头的一次插入将导致每个校验和都发生变化。因此,我们的想法是不基于特定的偏移量,而是根据块内容的某些属性来选择块。LBFS通过在文件上滑动48个字节的窗口并计算每个窗口的拉宾指纹来做到这一点。当指纹的低13位为零时,LBFS将这48个字节称为断点,并结束当前块、开始一个新的。由于拉宾指纹的输出是伪随机的,因此任何给定的48个字节为断点的概率为(8192分之1)。这就有了抗移位可变尺寸块的效果。任何哈希函数都可以用于将一个长文件分成多个块(只要随后使用加密哈希函数查找每个块的校验和即可):但是拉宾指纹是一种高效的旋转哈希,因为当区域A和B重叠时,区域B的拉宾指纹的计算可以重复使用区域A的拉宾指纹的部分计算。
请注意,这与rsync面临的问题相似。
参见
- W-重迭
- 旋转哈希
参考文献
- 迈克尔·拉宾. (PDF). Center for Research in Computing Technology, Harvard University. 1981 [2007-03-22]. Tech Report TR-CSE-03-01. (原始内容存档 (PDF)于2007-02-21) (英语).
- Athicha Muthitacharoen, Benjie Chen, and David Mazières "A Low-bandwidth Network File System" (页面存档备份,存于)
外部链接
- Andrei Z. Broder. . 1993 [2011-09-12]. (原始内容存档于2016-03-04).
- David Andersen. . 2007 [2007-04-12]. (原始内容存档于2007-05-16).
- Ross N. Williams (1993). "A painless guide to CRC Error detection algorithms(页面存档备份,存于)".
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.