1

我找到了 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);
4

1 回答 1

1

PBKDF2 通常用于从您的密码生成加密密钥;它不像使用 MD5 那样进行散列。您如何使用它进行登录?类似LastPass的东西?

通常一个人将密码(在盐和哈希之后)发送到服务器,服务器进行比较,而不是客户端。你有不同的用例吗?

于 2013-09-14T15:28:32.403 回答