Adler-32 hashing algorithm