Еще одна альтернатива, из здесь (поиск хэширования XOR).
Предполагая, что хэш должен быть длиной x байтов, разбить сообщение на блоки по x байтов; и скопировать их вместе. Это практически то же самое, что и использование метода 1 с ключом x 0. (или, альтернативно, начиная с ключа первых x байтов строки и игнорируя эти первые байты строки. Весьма забавный способ думать об этом)
(Также обратите внимание на то, что говорится о хешировании XOR, а именно о том, что это плохо. Очень плохо.) (Грубо. Это лучше, чем альтернативы, но этого недостаточно для того, для чего используется много хэширование)
РЕДАКТИРОВАТЬ: Еще одна маленькая вещь; если метод 1 использует один и тот же ключ во всех двоичных строках, которые хэшируются; тогда это не действительно не имеет значения, что это за ключ. xor'ing против константы сродни, скажем, ROT13 . <sarcasm>
В качестве альтернативы, если вы используете SHA1 для получения ключа на строку ... это может сделать хэш XOR намного лучше. </sarcasm>
key xor key == 0 //always
key xor (((key xor msg1) xor msg2) xor msg3)
== (msg1 xor msg2 xor msg3)