Я работаю над включением шифрования для данных, хранящихся в моем приложении. Я получил довольно далеко, поскольку я шифрую и дешифруя данные, моя проблема в том, что я не могу заставить очевидную ошибку дешифрования, когда используется неправильный ключ. Моя расшифровывать функция:Определите, является ли ключ неправильным с CCCrypt kCCOptionPKCS7Padding-Objective C
+ (NSData *)decryptedDataForData:(NSData *)data
password:(NSString *)password
iv:(NSData *)iv
salt:(NSData *)salt
error:(NSError **)error {
NSAssert(iv, @"IV must not be NULL");
NSAssert(salt, @"salt must not be NULL");
NSData *key = [self AESKeyForPassword:password salt:salt];
size_t outLength;
NSMutableData *
decryptedData = [NSMutableData dataWithLength:data.length];
CCCryptorStatus
result = CCCrypt(kCCDecrypt,
kAlgorithm,
kCCOptionPKCS7Padding,
key.bytes,
key.length,
iv.bytes,
data.bytes,
data.length,
decryptedData.mutableBytes,
decryptedData.length,
&outLength);
if (result == kCCSuccess) {
decryptedData.length = outLength;
}
else {
if (error) {
*error = [NSError errorWithDomain:kRNCryptManagerErrorDomain
code:result
userInfo:nil];
}
return nil;
}
return decryptedData;
}
Это взято из http://robnapier.net/aes-commoncrypto для справки.
Согласно документации CCCrypt, я должен получить kCCDecodeError, если мои данные не дешифруются должным образом, поэтому я предполагаю, что операция дешифрования была успешной, просто дал данные мусора из-за неправильного ключа.
Итак, что лучше всего подходит для определения того, был ли правильный ключ использован для дешифрования данных?
Спасибо. Я беру пользовательский ввод, чтобы создать ключ, поэтому я решил хэш-вход пользователя и зашифровал его. Если я дешифровать и хешировать пользовательский вход и хеши, то я, конечно, успешно расшифровал –