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];
2 つの異なる結果が得られます。「self」は私が作成したクレジット カード クラスです。なぜこれが起こっているのか誰にも分かりますか?
クレジットカードを保存および削除するために私が使用している2つの方法は次のとおりです。
- (BOOL)deleteCard {
return [Archiver delete:[self uniqueID]];
}
- (BOOL)saveCard {
return [Archiver persist:self key:[self uniqueID]];
}