The GitHub repo for this can be found here: https://github.com/johnmave126/nice-md5s. Note if you set the rustflags environment variable in CMD instead of PowerShell you don't want the quotes.
Fun little tool, get ~900M/s after a couple minutes on a 5950X. As the article says though the GPU should clobber that, anyone know of a similar tool that uses the GPU?
For finding interesting Ethereum addresses on the GPU (uses SHA3 instead of MD5) there's a tool called profanity.
Amusingly the tool was archived by the author years ago, and just last year a stupid bug in the random initialization code was found (32 bytes of state initialized with ~31 bits of entropy), leading to ~millions of $ in stolen ETH by exploiters.
I haven't looked at the project but would assume that several people generated their wallets by using this tool. The attackers were thus able to generate keys for existing wallets by simply bruteforcing the measly 31 bits that were used in the tool's random initialization.
A local community had a rather similar programming challenge years ago (although it was limited to digits-only/letters-only and pi-digits categories).
I revisited the challenge some years later, and managed to achieve a little over 200 MH/s per core on a 2013 CPU. I'd expect (or at least hope) for modern very high-end CPUs to reach somewhere between 5000-10000 MH/s when using all cores, using a similar decently optimized solution. (The thing you want to optimize is the hashing part.) A high-end GPU from 2016 should manage at least 10000 MH/s and more modern ones are likely to be several times faster.
Should there be a wildcard at the end of those imports? I've never seen that before and would expect to just alias the module. I'm not sure what aliasing the wildcard import could mean.
10 comments
[ 2.6 ms ] story [ 35.3 ms ] threadFun little tool, get ~900M/s after a couple minutes on a 5950X. As the article says though the GPU should clobber that, anyone know of a similar tool that uses the GPU?
Amusingly the tool was archived by the author years ago, and just last year a stupid bug in the random initialization code was found (32 bytes of state initialized with ~31 bits of entropy), leading to ~millions of $ in stolen ETH by exploiters.
I revisited the challenge some years later, and managed to achieve a little over 200 MH/s per core on a 2013 CPU. I'd expect (or at least hope) for modern very high-end CPUs to reach somewhere between 5000-10000 MH/s when using all cores, using a similar decently optimized solution. (The thing you want to optimize is the hashing part.) A high-end GPU from 2016 should manage at least 10000 MH/s and more modern ones are likely to be several times faster.
Suggestion for ergonomics:
Then you can just use `simd::intrinsic` and you get the one appropriate to your platform.A little extra typing at point of use but solves editor slowness issues and automatically adding imports issue.