This is the puzzle where you have to find the smallest integer such that
'<some salt>' , (that integer) printString has an MD5 hash beginning with
5 hexadecimal zeros?

Brute force is just fine.�� Calling libnettle's MD5 functions from a C
program, it found the right answer in under 0.2 seconds on a cheap laptop.
If using the MD5 class in Pharo doesn't take a reasonable time, you may
find that (MD5 isPluginAvailable) is false.�� On my cheap laptop, the
obvious code took 30 seconds to find the right answer, which surely means
that the plugin is *not* available.�� But there is absolutely no point in
looking for anything faster.

So,
�� (0 to: 1000000) findFirst: [:n | |digest|
�� �� digest := MD5 hashMessage: 'YOUR SALT GOES HERE' , n printString.
�� �� ... bytes begins with 00000 ...]

Linear search.
�� Compute string.
�� Compute its MD5 hash.
�� Check the result.

The only time-consuming thing was browsing the MD5 class (and its
superclass HashFunction) to figure out the interface.

Now it *could* have turned out to be too slow to be useful, in which
case another strategy would have been needed.�� But it didn't.
(I started with a rather smaller bound to get an idea of how fast it
was, and it was fast enough.)



On Mon, 10 Dec 2018 at 00:30, Roelof Wobben <r.wobben@home.nl> wrote:
Helllo,

a question about day4 of 2015
is it right that I can only solve this bruteforece
so begin at for example 1 , encode it, check for 5 zeros if found then I have found it otherwise increase the counter and do it again