summaryrefslogtreecommitdiff
path: root/docs/common/lib_crypto/RollingChecksum.txt
diff options
context:
space:
mode:
authorBen Summers <ben@fluffy.co.uk>2005-10-14 08:50:54 +0000
committerBen Summers <ben@fluffy.co.uk>2005-10-14 08:50:54 +0000
commit99f8ce096bc5569adbfea1911dbcda24c28d8d8b (patch)
tree049c302161fea1f2f6223e1e8f3c40d9e8aadc8b /docs/common/lib_crypto/RollingChecksum.txt
Box Backup 0.09 with a few tweeks
Diffstat (limited to 'docs/common/lib_crypto/RollingChecksum.txt')
-rw-r--r--docs/common/lib_crypto/RollingChecksum.txt32
1 files changed, 32 insertions, 0 deletions
diff --git a/docs/common/lib_crypto/RollingChecksum.txt b/docs/common/lib_crypto/RollingChecksum.txt
new file mode 100644
index 00000000..cbee1454
--- /dev/null
+++ b/docs/common/lib_crypto/RollingChecksum.txt
@@ -0,0 +1,32 @@
+CLASS RollingChecksum
+
+Implementing the rsync rolling checksum algorithm. Read it's description first:
+
+http://samba.anu.edu.au/rsync/tech_report/node3.html
+
+
+SUBTITLE Construction and initial checksum calculation
+
+The constructor takes a pointer to a block of data and a size, and calculates the checksum of this block. It can now be "rolled forward" to find the checksum of the block of the same size, one byte forward, with minimal calculation.
+
+
+FUNCTION RollingChecksum::GetChecksum()
+
+Returns the checksum for the current block.
+
+
+FUNCTION RollingChecksum::RollForward()
+
+This function takes the byte at the start of the current block, and the last byte of the block it's rolling forward to, and moves the checksum on.
+
+If the block is
+
+ char *pBlock = <something>;
+
+with size s, then it should be called with
+
+ RollForward(pBlock[0], pBlock[s])
+
+and now GetChecksum will return the checksum of the block (pBlock+1) of size s.
+
+