I need a quick checksum (as fast as possilbe) for small strings (20-500 chars).
I need the source code and that must be small! (about 100 LOC max)
If it could generate strings in Base32/64. (or something similar) it would be perfect. Basically the checksums cannot use any “bad” chars.. you know.. the usual (){}[].,;:/+-\| etc
Clarifications
It could be strong/weak, that really doesn’t matter since it is only for behind-the-scenes purposes.
It need not contain all the data of the original string since I will be only doing comparison with generated checksums, I don’t expect any sort of “decryption”.
Quick implementation in C, no copyrights from my side, so use it as you wish. But please note that this is a very weak “checksum”, so don’t use it for serious things 🙂 – but that’s what you wanted, isn’t it?
This returns an 32-bit integer checksum encoded as an string containing its hex value.
If the checksum function doesn’t satisfy your needs, you can change the
chk += ((int)(str[i]) * (i + 1));line to something better (f.e. multiplication, addition and bitwise rotating would be much better).EDIT: Following hughdbrown’s advice and one of the answers he linked, I changed the
forloop so it doesn’t callstrlenwith every iteration.