UPDATE: Read the accompanying research paper for which this project was written here.
Finds and records statistics about collisions in the CRC32 hashing algorithm.
This project uses the Gradle build system to manage dependencies and compiling. System must have Gradle installed to use these commands. See here for installation.
Note: If compiling and running manually, update classpath to location of library jars (e.g. lib/jcommander-1.72.jar).
Writes each collision to file serialized to json (or plain text). File: ./out/collisions.json (./out/collisions.txt)
gradle shadowjar
Uses Shadow plugin to create 'fat jar' that includes dependencies for distribution. Avoids trouble with java classpath mechanism.
javac -d out -cp "src/com/noahkurrack/:lib/json-simple-1.1.1.jar:lib/jcommander-1.72.jar:lib/chalk-1.0.2.jar" src/com/noahkurrack/*.java
java -server -jar build/libs/CollisionExploration-<version>-all.jar
java -server -cp "out/:lib/json-simple-1.1.1.jar:lib/jcommander-1.72.jar:lib/chalk-1.0.2.jar" com.noahkurrack.collision.Runner <args>
Runner class arguments:
--amount (-a): integer - number of times to run CollisionFinder [default: 2]
--verbose (-v): boolean - output current progress to command line
--simplefile (-sf): boolean - output stats to plain text instead of json
Created by Noah Kurrack, May 19, 2018. See license file.
The following sets forth attribution notices for third party software that are used in the project. See license file for more info.
- JCommander version 1.72 (http://jcommander.org)
- json-simple version 1.1.1 (http://code.google.com/p/json-simple/)
- chalk version 1.0.2 (https://github.com/tomas-langer/chalk)
- Shadow version 2.0.4 (http://imperceptiblethoughts.com/shadow/)
- further configurability