Does anyone know if there's a real benefit regarding decreasing collision probability by combining hash functions? I especially need to know this regarding 32 bit hashing, namely combining Adler32 and CRC32. Basically, will adler32(crc32(data)) yield a smaller collision probability than crc32(data)? The last comment here gives some test results in favor of combining, but no source is mentioned. For my purpose, collision is not critical (i.e. the task does not involve security), but I'd rather minimize the probability anyway, if possible. PS: I'm just starting in the wonderful world of hashing, doing a lot of reading about it. Sorry if I asked a silly question, I haven't even acquired the proper "hash dialect" yet, probably my Google searches regarding this were also poorly formed. Thanks.
Hash function combining - is there a significant decrease in collision risk?
1.5k Views Asked by Webmaster At
1
There are 1 best solutions below
Related Questions in HASH
- How can py tuple implicit cast to int?
- How to properly set hashes in script-src CSP policy header?
- Algorithm for finding the largest common substring for n strings using Rabin-Karp function
- Lua: is there a need to use hash of string as a key in lua tables
- When the key values are the same, the memory limit is exceeded when making a hash join
- Short for creating an array of hashes in powershell malfunction?
- LC347: Top K Frequent Elements; final result returns an extra element in list/array
- Hashing vertices of a Graph in C
- Is there a limit on the message size for SHA3?
- When hashing an API key, should I hash the suffix / prefix as well?
- Cmake error : Configuring incomplete, errors occurred
- murmur3 hashing function in postgres
- Hashing the password if it is not hashed in django
- Order of a set in Python
- Comparing the hash of a file, containing a list of hashes of multiple files instead of each file, is it good?
Related Questions in COLLISION
- Brick Breaker Ball Bounce
- I am trying to make a Turtle Eater Game and I'm running into a minor bug(kind of)
- Points system in Unity not working. I want to count points but make both objects disappear and it's not working
- How to make wall collision with staticbody2d & collisionshape2d ( using an area2D for player with collisionshape2d as a child ) in GODOT?
- How do you get the numerical values in this collision function
- Pygame slows down after Collision Handling PacMan
- Problem with a wall collision on a map loaded from a png file (like the raylib maze example)
- How to make collisions with rects in pygame
- pygame collisions while character is on a tile
- onCollisionEnter is not working in r3f how can i fix it?
- How to handle collision after a diagonal movement with rectangles
- Inverting a hitbox
- Gamemaker collisions
- Python Pygame Platformer
- Java Ball Movement: Unexpected Behavior with Boundary Reflections
Related Questions in CRC32
- Replicating C# CRC32 generator in JavaScript
- what is the purpose of second argument in PKZIP CRC32()?
- Why do i get more 256 false positive in PKZIP Decryption key verification?
- How to get updates from gitlab API if topics changed?
- CRC32 checksum in Excel
- What is the CRC32 Collision probability of All possible ASCII strings of variable length ranging from 1 to 7
- common setup for python crc (6.1.1) and stm32 hardware CRC unit?
- Why crc32(0) = 1696784233
- Compute POSIX CRC in batches
- Why is my InputStream not reading all bytes of a specified file? (CRC32 archive validation)
- CRC computation port from C to Python
- How to verify a CRC in receiver terminal?
- Problem in converting a Python code to Delphi
- Install yEnc - Python
- Uppy to tus.io file checksums in Node.js
Related Questions in ADLER32
- python3 and numba, wrong calculation of adler32 checksum
- Why is ```(n+1)(BASE-1)``` added when calculating the NMAX of Adler-32?
- How to calculate Adler32 checksum for zip in Bash?
- Non-cryptographic hash functions that are homomorphic with respect to concatenation
- Compressed AS2 Body
- Why does my Adler-32 Hash Function miss a zero every time?
- Adler32 generated checksum doesnt match the .txt files checksum
- Is this a bug in Java's Inflater or what?
- Security Error. Illegal access detected using ccavenue in php
- How to compute the Adler32 in zlib
- Can a stream contain some fix huffman compressed block and some dynamic huffman compressed blocks
- Deflate data decompression zlib
- Can a CRC32 engine be used for computing CRC16 hashes?
- Adler-32 checksum generating - why bit and shift right operator are used
- Why does my rolling adler32 checksum not work in go? (modulo arithmetic)
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
This doesn't make sense combining them in series like that. You are hashing one 32-bit space to another 32-bit space.
In the case of a crc32 collision in the first step, the final result is still a collision. Then you add on any potential collisions in the adler32 step. So it can not get any better, and can only be the same or worse.
To reduce collisions, you might try something like using the two hashes independently to create a 64-bit output space:
adler32(data) << 32 | crc32(data)
Whether there is significant benefit in doing that, I'm not sure.
Note that the original comment you referred to was storing the hashes independently: