简单的数据加密 发表于 2017-10-20 | 阅读次数 简单的数据加密.H 1234567891011121314#import <Foundation/Foundation.h>@interface NSString (Hash)@property (readonly) NSString *md5String;@property (readonly) NSString *sha1String;@property (readonly) NSString *sha256String;@property (readonly) NSString *sha512String;- (NSString *)hmacSHA1StringWithKey:(NSString *)key;- (NSString *)hmacSHA256StringWithKey:(NSString *)key;- (NSString *)hmacSHA512StringWithKey:(NSString *)key;@end .M 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081#import "NSString+hash.h"#import <CommonCrypto/CommonDigest.h>#import <CommonCrypto/CommonHMAC.h>@implementation NSString (Hash)- (NSString *)md5String{ const char *string = self.UTF8String; int length = (int)strlen(string); unsigned char bytes[CC_MD5_DIGEST_LENGTH]; CC_MD5(string, length, bytes); return [self stringFromBytes:bytes length:CC_MD5_DIGEST_LENGTH];}- (NSString *)sha1String{ const char *string = self.UTF8String; int length = (int)strlen(string); unsigned char bytes[CC_SHA1_DIGEST_LENGTH]; CC_SHA1(string, length, bytes); return [self stringFromBytes:bytes length:CC_SHA1_DIGEST_LENGTH];}- (NSString *)sha256String{ const char *string = self.UTF8String; int length = (int)strlen(string); unsigned char bytes[CC_SHA256_DIGEST_LENGTH]; CC_SHA256(string, length, bytes); return [self stringFromBytes:bytes length:CC_SHA256_DIGEST_LENGTH];}- (NSString *)sha512String{ const char *string = self.UTF8String; int length = (int)strlen(string); unsigned char bytes[CC_SHA512_DIGEST_LENGTH]; CC_SHA512(string, length, bytes); return [self stringFromBytes:bytes length:CC_SHA512_DIGEST_LENGTH];}- (NSString *)hmacSHA1StringWithKey:(NSString *)key{ NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding]; NSData *messageData = [self dataUsingEncoding:NSUTF8StringEncoding]; NSMutableData *mutableData = [NSMutableData dataWithLength:CC_SHA1_DIGEST_LENGTH]; CCHmac(kCCHmacAlgSHA1, keyData.bytes, keyData.length, messageData.bytes, messageData.length, mutableData.mutableBytes); return [self stringFromBytes:(unsigned char *)mutableData.bytes length:mutableData.length];}- (NSString *)hmacSHA256StringWithKey:(NSString *)key{ NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding]; NSData *messageData = [self dataUsingEncoding:NSUTF8StringEncoding]; NSMutableData *mutableData = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH]; CCHmac(kCCHmacAlgSHA256, keyData.bytes, keyData.length, messageData.bytes, messageData.length, mutableData.mutableBytes); return [self stringFromBytes:(unsigned char *)mutableData.bytes length:mutableData.length];}- (NSString *)hmacSHA512StringWithKey:(NSString *)key{ NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding]; NSData *messageData = [self dataUsingEncoding:NSUTF8StringEncoding]; NSMutableData *mutableData = [NSMutableData dataWithLength:CC_SHA512_DIGEST_LENGTH]; CCHmac(kCCHmacAlgSHA512, keyData.bytes, keyData.length, messageData.bytes, messageData.length, mutableData.mutableBytes); return [self stringFromBytes:(unsigned char *)mutableData.bytes length:mutableData.length];}#pragma mark - Helpers- (NSString *)stringFromBytes:(unsigned char *)bytes length:(int)length{ NSMutableString *mutableString = @"".mutableCopy; for (int i = 0; i < length; i++) [mutableString appendFormat:@"%02x", bytes[i]]; return [NSString stringWithString:mutableString];}@end