X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=ucw%2Fdoc%2Fhash.txt;h=788a382c3730c202df7581c31ccc9d3acdac170d;hb=ae2b00416589dfe798fc40f0575f62a0c664798f;hp=b28c42a76eb5448ba0b403851f368ad294bf8630;hpb=1ac0074ba074457f7910c3ed97f5bd73bd547582;p=libucw.git diff --git a/ucw/doc/hash.txt b/ucw/doc/hash.txt index b28c42a7..788a382c 100644 --- a/ucw/doc/hash.txt +++ b/ucw/doc/hash.txt @@ -1,26 +1,42 @@ Hashing routines ================ -Libucw contains two hash algorithms, MD5 (RFC 1321) and SHA1 (RFC -3174). +LibUCW contains implementations of several hash algorithms. -- <> -- <> -- <> +<>: + +- <> (RFC 1321) +- <> (RFC 3174) +- <> (RFC 2104) +- <> + +<>: + +- <> +- <> + +<>: + +- <> +- <> + +[[crypto]] +Cryptographic hashes +-------------------- [[md5]] MD5 ---- +~~~ !!ucw/md5.h [[sha1]] SHA1 ----- +~~~~ !!ucw/sha1.h [[usage]] -Usage ------ +Common usage +~~~~~~~~~~~~ There are two ways you can use the hashing routines. @@ -45,6 +61,42 @@ There are two ways you can use the hashing routines. byte output[MD5_SIZE]; memcpy(output, md5_final(&c), MD5_SIZE); -SHA1 has the same interface, so both ways work to it as well. +SHA1 has the same interface, so the same two ways apply. See also <>. + +[[checksum]] +Checksums +--------- + +Their purpose is checking against random data changes, hardware +failures and alike. They are not to be used against aimed attacks. + +Adler-32 +~~~~~~~~ + +The <> is documented in the +<>. + +CRC-32 +~~~~~~ + +32-bit Cyclic Redundancy Check with the polynomial suggested by +Castagnoli et al.: Optimization of Cyclic Redundancy-Check Codes +with 24 and 32 Parity Bits", IEEE Trans. on Communications, Vol. 41, +No. 6, 1993. + +The interface is similar to the one we use for the cryptographic hashes. + +!!ucw/crc.h + +[[nocrypto]] +Non-cryptographic hashes +------------------------ + +They are usually used to identify values in hash tables. + +All these functions expect to be moduled by the size of a hash table. +The size should be a prime number (it gives better distribution). + +!!ucw/hashfunc.h