Мне нужно синхронизировать клиенты 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 кажется очень полезным, но часть target-c не работает: https://gist.github.com/pcperini/2889493
Задача ещё не решена.
Других решений пока нет …