CommonCrypto
を使用してキーを生成しようとしていますPBKDF2
が、インポートできないようですCommonCrypto/CommonKeyDerivation.h
。見つからないというエラーだけです。
何か案は?
編集:おそらく、セキュリティ フレームワークを既に追加しており、他のすべてのCommonCrypto
ヘッダーをインポートできることを言及する必要があります。
CommonCrypto
を使用してキーを生成しようとしていますPBKDF2
が、インポートできないようですCommonCrypto/CommonKeyDerivation.h
。見つからないというエラーだけです。
何か案は?
編集:おそらく、セキュリティ フレームワークを既に追加しており、他のすべてのCommonCrypto
ヘッダーをインポートできることを言及する必要があります。
AES256キーを生成する方法は次のとおりです。唯一興味深いのは、使用するラウンド数を CommonCrypto に推定してもらうことです。それはかなり簡単に思えます。
#import <CommonCrypto/CommonKeyDerivation.h>
...
// Makes a random 256-bit salt
- (NSData*)generateSalt256 {
unsigned char salt[32];
for (int i=0; i<32; i++) {
salt[i] = (unsigned char)arc4random();
}
return [NSData dataWithBytes:salt length:32];
}
...
// Make keys!
NSString* myPass = @"MyPassword1234";
NSData* myPassData = [myPass dataUsingEncoding:NSUTF8StringEncoding];
NSData* salt = [self generateSalt256];
// How many rounds to use so that it takes 0.1s ?
int rounds = CCCalibratePBKDF(kCCPBKDF2, myPassData.length, salt.length, kCCPRFHmacAlgSHA256, 32, 100);
// Open CommonKeyDerivation.h for help
unsigned char key[32];
CCKeyDerivationPBKDF(kCCPBKDF2, myPassData.bytes, myPassData.length, salt.bytes, salt.length, kCCPRFHmacAlgSHA256, rounds, key, 32);
iOS5 向けにビルドしていますか? または以前のバージョン?
ヘッダー ファイルで定義されているAPICCKeyDerivationPBKDF
とCCCalibratePBKDF
は、IOS5 (または OSX 10.7) 以降でのみ使用できます。
ターミナル ウィンドウ内でこれを実行すると、ファイルが存在することを確認できます。
$ find /Developer/ -name CommonKeyDerivation.h
/Developer//Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/include/CommonCrypto/CommonKeyDerivation.h
/Developer//Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/usr/include/CommonCrypto/CommonKeyDerivation.h
/Developer//SDKs/MacOSX10.7.sdk/usr/include/CommonCrypto/CommonKeyDerivation.h