我已经QR
使用 lib 扫描了一个代码图像ZXingWidget
,收到了一个字符串作为响应。lib-sodium
现在我想在 iOS中加密那个字符串。
任何关于如何使用lib-sodium
库在 iOS 中进行字符串加密的建议......在此先感谢......
我已经QR
使用 lib 扫描了一个代码图像ZXingWidget
,收到了一个字符串作为响应。lib-sodium
现在我想在 iOS中加密那个字符串。
任何关于如何使用lib-sodium
库在 iOS 中进行字符串加密的建议......在此先感谢......
根据要求:实现 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);
}
如果您要复制此代码以在生产应用程序中使用:不要。这只是示例代码。基本上,如果需要此代码,他们不应该进行密码学。聘请领域专家,至少让领域专家审查代码。