내 응용 프로그램에 저장된 데이터에 암호화를 통합하려고합니다. 나는 데이터를 암호화하고 해독한다는 점에서 꽤 멀리까지 갔다. 나의 문제는 잘못된 키가 사용될 때 명백한 암호 해독 오류를 강요하는 것처럼 보이지 않는다는 것이다. 내 해독 기능 :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를 수신해야하므로 해독 작업이 성공했다고 가정하고 잘못된 키로 인해 가비지 데이터를 제공한다고 가정합니다.
데이터의 암호를 해독하는 데 올바른 키가 사용되었는지 확인하는 가장 좋은 방법은 무엇입니까?
감사합니다. 사용자 입력을 해싱하여 사용자 입력을 해시하고 암호화하기로 결정했습니다. 해독 및 해시 사용자 입력 및 해시 일치하는 경우 나는 확실히 성공적으로 해독했습니다. –