NSString加密相关扩展
// // NSString+Encrypt.h // CloudShopping // // Created by sixiaobo on 14-7-9. // Copyright (c) 2014年 com.Uni2uni. All rights reserved. // #import <Foundation/Foundation.h> #import <CommonCrypto/CommonCrypto.h> #import <sys/sysctl.h> #import <sys/socket.h> #import <net/if.h> #import <net/if_dl.h> /*! * @brief NSString扩展加密相关方法 * @author huangyibiao */ @interface NSString (Encrypt) /*! * @brief 将字符串本身进行md5加密,并将加密后的字符串返回 * @return 返回加密后的字符串 */ - (NSString *)md5; //! sha1加密 - (NSString *)sha1; //! 获取网卡的MAC地址 + (NSString *)obtainMacAddress; @end
// // NSString+Encrypt.m // CloudShopping // // Created by sixiaobo on 14-7-9. // Copyright (c) 2014年 com.Uni2uni. All rights reserved. // #import "NSString+Encrypt.h" #import "NSString+Hashing.h" @implementation NSString (Encrypt) #pragma mark - md5加密 - (NSString *)md5 { return self.MD5Hash; } #pragma mark - sha1加密方法 - (NSString *)sha1 { const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding]; NSData *data = [NSData dataWithBytes:cstr length:self.length]; uint8_t digest[CC_SHA1_DIGEST_LENGTH]; CC_SHA1(data.bytes, data.length, digest); NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) { [output appendFormat:@"%02x", digest[i]]; } return output; } #pragma mark - 获取MAC地址 + (NSString *)obtainMacAddress { int mib[6]; size_t len; char *buf; unsigned char *ptr; struct if_msghdr *ifm; struct sockaddr_dl *sdl; mib[0] = CTL_NET; mib[1] = AF_ROUTE; mib[2] = 0; mib[3] = AF_LINK; mib[4] = NET_RT_IFLIST; if ((mib[5] = if_nametoindex("en0")) == 0) { printf("Error: if_nametoindex error\n"); return NULL; } if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) { printf("Error: sysctl, take 1\n"); return NULL; } if ((buf = malloc(len)) == NULL) { printf("Could not allocate memory. error!\n"); return NULL; } if (sysctl(mib, 6, buf, &len, NULL, 0) > 0) { free(buf); printf("Error: sysctl, take 2"); return NULL; } ifm = (struct if_msghdr *)buf; sdl = (struct sockaddr_dl *)(ifm + 1); ptr = (unsigned char *)LLADDR(sdl); NSString *outstring = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)]; free(buf); return [outstring uppercaseString]; } @end
最后更新:2017-04-03 05:39:42