Бьюсь об заклад, есть больше, чем просто «случаи», когда две строки генерируют один и тот же хеш с помощью вашей функции. На самом деле, это, вероятно, случается чаще, чем вы думаете.
Несколько вещей, которые нужно осознать:
Сначала будут коллизии хешей. Такое случается. Даже с действительно очень большими пробелами, такими как MD5 (128 бит), есть две строки, которые могут генерировать один и тот же результирующий хеш. Вы должны справиться с этими столкновениями, создавая ведра.
Во-вторых, длинное целое число на самом деле не большое хеш-пространство. Вы получите больше столкновений, чем если бы вы использовали больше битов.
В-третьих, в Visual Basic доступны библиотеки (например, System.Security.Cryptography
пространства имен .NET), которые гораздо лучше справятся с хэшированием, чем большинство простых смертных.