giovanifss / hash-collision-finder Goto Github PK
View Code? Open in Web Editor NEWA distributed generic attack to find collision in hash functions
A distributed generic attack to find collision in hash functions
For desired collision of 15 bytes, 1073741824 iterations are needed. This amout of memory needed is not available.
The 1073741824 is the number of iterations needed to find a collision in 15 bytes in sequence. As this program search for collision of bytes at any position in the hash, a mathematic adjust is needed to reduce this value.
Update makefile in a way that only one md5 and generator c file will be needed. Nowdays each implementation have the same files copied.
Test parallel and modular parallel implementation for finding partial collision. This data will go into the paper.
Parallel implementation must be tested with different number of cores.
Given that pow()
return a double
type. An external implementation of power operation is needed.
In 4cfc3de a basic implementation was tested, returning a unsigned long long int
type, which suports from 0 to 2^64 -1 numbers.
The problem is that for a full collision in md5, 2^64 iterations are needed (According to birthday attack). This number is out of range for unsigned long long int
.
Or a new implementation with a different approach should be used, or a workaround for this specific number must be implemented.
Make the program receive options such how many bytes are wanted in collision as parameter. This will enable to write scripts for multiple tests.
Based on "Hash Function Balance and its Impact on Birthday Attacks" paper, implement a function in generator.c to calculate how many iterations are needed to find a collision.
Currently, the algorithm search for collision at any location, taking only the number of bytes that must be equal. Those bytes can be in any location in the digest.
As most of the papers that use partial collision to create an attack to the hash function searches a block in the beginning of the hash, we will update our algorithm.
Start testing serial and modular serial implementation for finding partial collision. This data will go into the paper.
Return to use raw md5 digest (128 bit) instead of hexadecimal representation (32 bytes) for improve memory usage.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.