with the that texto for detector decrypt convertir calculate iphone hash sha512

iphone - the - sha512 crypt



hash una cadena de contraseƱa usando SHA512 como C# (2)

Estoy desarrollando la función de inicio de sesión para mi aplicación de iPhone, así que quiero cifrar la contraseña usando el algoritmo de hash SHA512 y luego obtener el resultado como NSString (el resultado debería ser el mismo con SHA512 en C #). Después de pasar mucho tiempo en internet, todavía no descubro la solución. :(

¿Hay alguien que tenga la solución y el código de muestra? ¡Por favor, ayúdenme! ¡Muchas gracias!

[Actualizar] En mi código C #, la contraseña se almacena usando SecureString, por lo que tal vez sea causa de crear una matriz de bytes diferente entre Object-C y C #


Esta función copiará una cadena usando SHA512. La cadena resultante es una representación hexadecimal del hash:

+ (NSString *) createSHA512:(NSString *)source { const char *s = [source cStringUsingEncoding:NSASCIIStringEncoding]; NSData *keyData = [NSData dataWithBytes:s length:strlen(s)]; uint8_t digest[CC_SHA512_DIGEST_LENGTH] = {0}; CC_SHA512(keyData.bytes, keyData.length, digest); NSData *out = [NSData dataWithBytes:digest length:CC_SHA512_DIGEST_LENGTH]; return [out description]; }

No olvide incluir el encabezado correcto:

#include <CommonCrypto/CommonDigest.h>


Estoy usando este.

Concuerda con la salida del algoritmo PHP SHA512 :

<?php `hash(''sha512'', ''The quick brown fox jumped over the lazy dog.'');` ?>


Código Objective-C:

+(NSString *)createSHA512:(NSString *)string { const char *cstr = [string cStringUsingEncoding:NSUTF8StringEncoding]; NSData *data = [NSData dataWithBytes:cstr length:string.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; }