Frage

Ich entwickle Anmeldefunktion für meine iPhone-Anwendung, so dass ich das Passwort mit dem SHA512 Hash-Algorithmus dann bekommen Sie das Ergebnis als NSString (das Ergebnis sollte gleich sein mit SHA512 in C #) Hash will. viel Zeit im Internet, ich herausfinden, noch nicht die Lösung noch, nachdem er! : (

Gibt es jemand die Lösung und Beispielcode hat, helfen Sie mir bitte! Vielen Dank!

[Update] In meinem C # -Code, wird das Passwort mit Secure gespeichert, so vielleicht ist es Sache macht unterschiedlicher Byte-Array zwischen Objective-C und C #

War es hilfreich?

Lösung

Mit dieser Funktion wird eine Zeichenfolge mit SHA512 Hash. Der resultierende String ist eine hexadezimale Darstellung des 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];
}

Vergessen Sie nicht, den richtigen Header enthalten:

#include <CommonCrypto/CommonDigest.h>

Andere Tipps

Ich bin mit diesem ein.

Sie paßt PHP SHA512 Algorithmus Ausgabe:

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


Objective-C-Code:

+(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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top