文字列からハッシュを作成したい。文字列にアクセント付きの文字 (é、ő など) が含まれている場合、NSASCIIStringEncoding でクラッシュします。NSUTF8StringEncoding ではクラッシュしませんが、サーバー上では一致しません。
+(NSString *) getSHA256FromString: (NSString *)clear {
const char *s=[clear cStringUsingEncoding: NSASCIIStringEncoding];// NSUTF8StringEncoding works, but isn't the same on server
NSData *keyData=[NSData dataWithBytes:s length:strlen(s)];
uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0};
CC_SHA256(keyData.bytes, keyData.length, digest);
NSData *out=[NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH];
NSString *hash=[out description];
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
return hash;
}