What's some good advice on eliminating collisions when hashing things? I need a unique identifier for all my users, but I want them to be private. I'm thinking of using ODIN-1 (https://code.google.com/p/odinmobile/wiki/ODIN1), a sha1 of different device-specific identifiers; MAC for iOS, AndroidID for Android and DeviceUniqueId for Windows Phone.
However, what's the collision risk on those hashes? Would using another hashing function help? Another input? Platform-specific prefix? I really need every legitimate hash to be unique.
Let's ignore users who fake their hashes for now, since I cannot really do that much about them. Client side security is what it is.