|
UUHash is a hash algorithm employed by clients on the FastTrack network. It is employed for its ability to hash very large files in a very short period of time, even on older computers. However, this is achieved by only hashing a fraction of the file. This weakness makes it trivial to create a hash collision, allowing large sections to be completely altered without altering the checksum. This method is used by Kazaa. The weakness of UUHash is exploited by anti-p2p agencies to corrupt downloads.〔 Thomas Mennecke. (How Overpeer was able to corrupt data on the FastTrack network ). 2005. 〕 ==How it works== The UUHash is a 160-bit string that is usually Base64-encoded for presentation. It is a concatenation of an MD5 hash and a CRC32 sum of selected chunks of the file.〔(MLDonkey source code ), file ''src/utils/lib/fst_hash.c'', retrieved 2014-08-20〕〔(sig2dat source code ), file ''sig2dat.c'', function ''GetHashWin32'', retrieved 2014-08-20〕 The first 307200 bytes (300 Kibibyte, one "chunk size") of the file are MD5-hashed (less if file is shorter). The 32 bit little endian integer value ''smallhash'' is initialized to 0. If the file is strictly larger than one chunk size, a series of chunks at file offsets of 2n MiB (n ≥ 0) and one chunk right at the end of the file are hashed using a CRC32 (polynomial 0xEDB88320 reversed, 0x04C11DB7 normal). The last chunk of the power-of-two series ends strictly ''more'' than one chunk size before the end of the file, i.e. there is always at least one unread byte between the last two chunks (if there are that many chunks).〔(BitCollider/0.4.0 ) implemented this unfaithfully〕 The end-of-file chunk may be shorter than one chunk size; it starts at or after one chunk size into the file. The CRC is initialized using ''smallhash'' and stored into ''smallhash''. So, for example: :offset 0 MiB, 300 KiB hashed with MD5 :offset 1 MiB, 300 KiB hashed with CRC32 :offset 2 MiB, 300 KiB hashed... :offset 4 MiB, 300 KiB hashed... :offset 8 MiB, 300 KiB hashed... :... :last 300 KiB of file hashed with CRC32 Finally, the bitwise complement of ''smallhash'' (still zero for files up to 300 KiB) is XORed together with the file size in bytes. The 160-bit UUHash is now the concatenation of the 128-bit MD5 hash and the final 32-bit ''smallhash'' value. 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「UUHash」の詳細全文を読む スポンサード リンク
|