这个哈希保证是唯一的吗?

And*_*kha 4 cocoa unique objective-c ios

我需要唯一地标识一对Facebook用户ID.这就是我这样做的方式:

NSString *firstId  = @"123456789";
NSString *secondId = @"987654321";

NSUInteger first_hash = [firstId hash];
NSUInteger second_hash = [secondId hash];

NSUInteger combinedHash = first_hash ^ second_hash;
NSUInteger reverseHash  = second_hash ^ first_hash;

NSLog(@"Combined hash %d\nReverse hash %d", combinedHash, reverseHash); // both are equal
Run Code Online (Sandbox Code Playgroud)

好的,现在我知道无论哈希组合的顺序如何,我都得到相同的值.非常好.但这个价值是否保证是唯一的?或者,它可能是ID的组合表示322233322,并233322233会产生相同的值combinedHash?如果是,那么如何为一对ID创建唯一标识符?

dev*_*fan 5

如果不了解ObjectiveC,看起来你只是对价值观进行异化.
当然,这不是唯一的.
101 ^ 100 = 001
001 ^ 000 = 001
这很容易.

它必须是不可逆转的哈希还是只需要一个唯一的ID?
后者:只是连接,之间有一个独特的分隔符.
否则,根据最大可能的输入长度,可能不可能有唯一的散列.
(没有发明一个全新的算法,这可能需要时间:))

编辑,关于两个可能的连接顺序:
只需在连接之前比较两个数字并将较小的数字放在第一位.
这样,任何ID搜索都不能进行两次.