Цель состоит в том, чтобы запустить 5000 раундов CC_SHA512
в приложении iOS и получите тот же результат 5000 раундов open_ssl_digest($passkey, 'sha512')
в php. Я нашел этот код на stackoverflow:
-(NSString*) sha512:(NSString*)input {
const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:input.length];
uint8_t digest[CC_SHA512_DIGEST_LENGTH];
CC_SHA512(data.bytes, data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA512_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA512_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
}
и выполнение всего кода 5000 раз дает те же результаты, что и openssl_digest, но я думал о том, чтобы сделать его более эффективным, вставив этот цикл после первого хэша и перед созданием NSMutableString
:
//do it 4999 more times
for (int i=0; i<4999; i++)
CC_SHA512(digest, CC_SHA512_DIGEST_LENGTH, digest)
Но это дает другой хэш.
Задача ещё не решена.
Других решений пока нет …