4 ms·
I answered the why below. Also, i didn't feel there was anything really "wrong" with others. One motivation i had specifically apart from that paper i linked
by 19eightyfour 9y ago
I answered the why below. Also, i didn't feel there was anything really "wrong" with others.
One motivation i had specifically apart from that paper i linked asking for a different way, was i was bored of seeing the same hash and type of code in hashes and ciphers again and again. And i had made a successful RNG, using a very simple construction, in a similar genre to this same regular genre, using the traditional operations like shifts and xors, and i felt i pretty much had nailed that type of construction to my satisfaction. So i wanted to do something different. A hash with a different aesthetic. A hash that, when you look at the code, it looks different to others.
I didn't like that i just had success in this one genre of hash or rng code, and i wanted to do something just using arithmetic operations. It annoyed me that i had never really been able to find, or make, a good hash or rng without using shifts or xors or the same boring multiply stuff. When you see enough of them, it's all just derivative... Changing constants and so on...And the choices, this xor instead of that plus, are basically arbitrary because the space of possible algorithms using similar constructions is so huge, they're really not so different to each other, just more points in the same hyperplane, and there exist still so many other algorithms to find that way, a computer could basically fill in the rest of the dots. So instead of trying to discover a new point in parameter space of constructions like that, i wanted to get back to something more pure, that was more about the essence of a different construction, rather than a few more tweaks to the same type.
Also, not just pure, but short. So many lines of shifts and xors are unnecessary...i know from deep and long experience, you don't need that much code to make so much good apparent entropy. I proved that by making a good rng, with a very simple construction. And I've written code like the sea of hashes and mixing functions hundreds of times... And really... It is like, change this shift, change this constant, change the construction, tweak until it works... But it's ask basically the same structure... It's just so boring after a while.
I'm trying to convey to you the feeling that motivated me to do it, since that is what you asked. Hope it comes across clearly.
Finally, i don't want this to come across as only a condemnation. I draw a lot of inspiration, ideas and information reading other people's ciphers, hashes, and papers. It's just, I don't want to copy the same style always. I want to diversify. I have a good mixing function in the traditional genre ( dosy, also on npm ), and I wanted to see if i could construct a good mixing function in a new aesthetic. And i have. Hooray!
Tl;dr - aesthetics. I felt bored with what i had seen and done. I wanted to discover, make and see something new.