在iOS中使用md5获取具有相同对象的两个不同ID

时间:2016-05-19 09:28:27

标签: ios md5 nsarchiving

我正在使用md5算法在我的应用中使用以下方法存档信用卡信息:

- (NSString *)uniqueID {
// nsobject --> nsdata -- > md5 hash --> hex string (30 chars)
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5([data bytes], (uint32_t)[data length], result);
return [NSString stringWithFormat:
       @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
       result[0], result[1], result[2], result[3],
       result[4], result[5], result[6], result[7],
       result[8], result[9], result[10], result[11],
       result[12], result[13], result[14], result[15]
];
}

我也在使用相同的算法检索数据。但是,我发现打印后(NSLOG):

[self uniqueID]; 

我会得到两个不同的结果。 “self”是我创建的信用卡类。有人知道为什么会这样吗?

以下是我用来保存和删除信用卡的两种方法:

- (BOOL)deleteCard {
return [Archiver delete:[self uniqueID]];
}

- (BOOL)saveCard {
return [Archiver persist:self key:[self uniqueID]];
}

0 个答案:

没有答案