我找到了pbkdf2哈希算法的实现,可以计算哈希,但是我不知道如何登录才能将哈希与密码进行比较。
有人可以给我提示吗?
这是我对hasing算法的实现
#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);
最佳答案
PBKDF2通常用于根据您的密码生成加密密钥。它不像使用MD5那样用于散列。您如何使用它进行登录?像LastPass一样?
通常,将密码(在加盐和哈希之后)发送到服务器,然后由服务器而不是客户端进行比较。您有其他用例吗?
关于ios - pbkdf2 objective-c 比较哈希,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18800488/