我最終編寫了一個自定義的解決方案,使用內置的Crypt庫中的RC4加密。這是令人驚訝的直截了當。基本上,它需要建立一個加密/解密的NSData的塊,然後讀/寫那些塊到文件的功能......下面是確實的情況下,別人的加密感興趣的功能:
- (NSData*)RC4EncryptDecryptWithKey:(NSString *)key operation:(CCOperation)operation
{
// convert to C string..
int keySize = [key length];
char keyPtr[keySize];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr
maxLength:sizeof(keyPtr)
encoding:NSUTF8StringEncoding];
// encode/decode
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength;
void *buffer = malloc(bufferSize);
size_t numBytesOut = 0;
CCCryptorStatus cryptStatus = CCCrypt(operation,
kCCAlgorithmRC4,
kCCOptionECBMode,
keyPtr,
8,
NULL,
[self bytes],
dataLength,
buffer,
bufferSize,
&numBytesOut);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer
length:numBytesOut
freeWhenDone:YES];
}
free(buffer);
return nil;
}
- (NSData*)RC4EncryptWithKey:(NSString*)key {
return [self RC4EncryptDecryptWithKey:key operation:kCCEncrypt];
}
- (NSData*)RC4DecryptWithKey:(NSString*)key {
return [self RC4EncryptDecryptWithKey:key operation:kCCDecrypt];
}
顯然,人們可以創建更安全的東西(例如AES)或其他(其實我用其他加密包裝的例子來寫這個)
似乎是一個非常愚蠢的理由加密的東西(因爲它聽起來像被下載的數據並不需要安全)。在蘋果規範中,它說所有本地數據都必須加密嗎? – shookster 2010-07-16 02:44:49
不是蘋果規格,但客戶端的要求:( – Nick 2010-07-17 01:10:47
這是否有幫助?https://nickharris.wordpress.com/2010/07/14/core-data-and-enterprise-iphone-applications-protecting-your-data/ – shookster 2010-07-17 05:18:52