我使用QR
lib扫描了ZXingWidget
代码图像,收到了一个字符串作为响应。
现在我想在iOS中使用lib-sodium
加密该字符串。
如何使用lib-sodium
库在iOS中进行字符串加密的任何建议....
提前谢谢......
答案 0 :(得分:0)
根据要求:实施PBKDF的示例代码
请注意,这是一个示例,而不是生产代码。
#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);
}
如果要复制此代码以在生产应用中使用:不要。这只是示例代码。基本上如果需要这个代码,他们就不应该进行加密。聘请域专家,至少要有域专家审查的代码。