У вас есть некоторые проблемы здесь.Эта функция принимает двоичный ввод и дает двоичный вывод.Ваш код вычисляет хэш первых 12 байтов строкового объекта.Вы должны сначала преобразовать его в NSData.
NSData* input = [passwordDgst dataUsingEncoding: NSUTF8StringEncoding]; // Could use UTF16 or other if you like
unsigned char passwordDgstchar[CC_SHA512_DIGEST_LENGTH];
CC_SHA512([input bytes],
[input length],
passwordDgstchar);
passwordDgstchar теперь содержит дайджест в необработанном двоичном файле.Чтобы получить это, скажем, в гексе:
NSMutableString* sha512 = [[NSMutableString alloc] init];
for (int i = 0 ; i < CC_SHA512_DIGEST_LENGTH ; ++i)
{
[sha512 appendFormat: @"%02x", passwordDgstChar[i];
}