我期待使用PBKDF2
实施加密。
如果可能的话,请您提供示例代码。实施PBKDF
加密字符串..
感谢..
答案 0 :(得分:0)
请注意,这是一个示例,而不是生产代码。
#import <CommonCrypto/CommonKeyDerivation.h>
+ (NSData *)doKeyForPassword:(NSString *)password
salt:(NSData *)salt
keySize:(NSUInteger)keySize
rounds:(NSUInteger)rounds {
NSMutableData *derivedKey = [NSMutableData dataWithLength:keySize];
NSData *passwordData = [password dataUsingEncoding: NSUTF8StringEncoding];
CCKeyDerivationPBKDF(kCCPBKDF2, // algorithm
passwordData, // password
passwordData, // passwordLength
salt.bytes, // salt
salt.length, // saltLen
kCCPRFHmacAlgSHA1, // PRF
rounds, // rounds
derivedKey.mutableBytes, // derivedKey
derivedKey.length); // derivedKeyLen
return derivedKey;
}
非常简单的测试,使用更好的盐 并且可以使用CCCalibratePBKDF进行更好的回合计数。
- (void)test_doKeyForPassword {
NSData *key = [Crypto doKeyForPassword:@"password"
salt:[@"salt" dataUsingEncoding:NSUTF8StringEncoding]
keySize:kCCKeySizeAES128
rounds:1000];
NSLog(@"doKeyForPassword: %@",key);
}
如果要复制此代码以在生产应用中使用:不要。这只是示例代码。基本上如果需要这个代码,他们就不应该进行加密。聘请域专家,至少要有域专家审查的代码。