我需要同步PHP和Objective-C客户端,以便他们可以使用相同的凭据登录。我找到了几种不同的哈希密码方法,但问题是它们的输出都没有匹配!
是否有人都有PHP和Objective-C的代码,它们将应用SHA256(或等效的)散列算法,使其输出相同?
目前我正在将它用于Objective-C:
//salt the password
NSString *saltedPassword = [NSString stringWithFormat:@"%@%@", @"<passwd input>", kSalt];
//prepare the hashed storage
NSString* hashedPassword = nil;
unsigned char hashedPasswordData[CC_SHA1_DIGEST_LENGTH];
//hash the pass
NSData *data = [saltedPassword dataUsingEncoding: NSUTF8StringEncoding];
if (CC_SHA1([data bytes], [[NSNumber numberWithInt:[data length]] doubleValue], hashedPasswordData)) {
hashedPassword = [[NSString alloc] initWithBytes:hashedPasswordData length:sizeof(hashedPasswordData) encoding:NSASCIIStringEncoding];
}
这适用于PHP:
$password = "<passwd input>" . "<salt>";
$password = sha1($password);
此外,这个Github帖子似乎非常有用,但是Objective-c部分不起作用:https://gist.github.com/pcperini/2889493