目标是在iOS应用中运行5000轮CC_SHA512
,并在php中获得5000轮open_ssl_digest($passkey, 'sha512')
的相同结果。我在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)
但这会产生不同的哈希值。