Hash-Passwort-String mit SHA512 wie C #
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 #
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;
}