iOS SHA512散列轮次与PHP不同

时间:2015-08-15 06:39:21

标签: php ios hash sha512

目标是在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)

但这会产生不同的哈希值。

0 个答案:

没有答案