How can I compute a SHA-2 (ideally SHA 256 or SHA 512) hash in iOS? How can I compute a SHA-2 (ideally SHA 256 or SHA 512) hash in iOS? ios ios

How can I compute a SHA-2 (ideally SHA 256 or SHA 512) hash in iOS?


This is what I'm using for SHA1:

#import <CommonCrypto/CommonDigest.h>+ (NSData *)sha1:(NSData *)data {    unsigned char hash[CC_SHA1_DIGEST_LENGTH];    if ( CC_SHA1([data bytes], [data length], hash) ) {        NSData *sha1 = [NSData dataWithBytes:hash length:CC_SHA1_DIGEST_LENGTH];                return sha1;    }return nil;}

Replace CC_SHA1 with CC_SHA256 (or whichever you need), as well as CC_SHA1_DIGEST_LENGTH with CC_SHA256_DIGEST_LENGTH.


Here's a pretty similar one based on NSString

+ (NSString *)hashed_string:(NSString *)input{    const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding];    NSData *data = [NSData dataWithBytes:cstr length:input.length];    uint8_t digest[CC_SHA256_DIGEST_LENGTH];    // This is an iOS5-specific method.    // It takes in the data, how much data, and then output format, which in this case is an int array.    CC_SHA256(data.bytes, data.length, digest);    NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];    // Parse through the CC_SHA256 results (stored inside of digest[]).    for(int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {        [output appendFormat:@"%02x", digest[i]];    }    return output;}

(Credits go to http://www.raywenderlich.com/6475/basic-security-in-ios-5-tutorial-part-1)


This is what worked for me

func sha256(securityString : String) -> String {    let data = securityString.dataUsingEncoding(NSUTF8StringEncoding)!    var hash = [UInt8](count: Int(CC_SHA256_DIGEST_LENGTH), repeatedValue: 0)    CC_SHA256(data.bytes, CC_LONG(data.length), &hash)    let output = NSMutableString(capacity: Int(CC_SHA1_DIGEST_LENGTH))    for byte in hash {        output.appendFormat("%02x", byte)    }    return output as String}