首页 > 代码库 > 加密解密再也不是你的噩梦
加密解密再也不是你的噩梦
加密解密再也不是你的噩梦
也许你在你的项目中用过加密解密,诸如AES加解密、DES加解密等等加密算法。你从Github上下载了一份源码,导入到自己的项目当中,导入头文件,使用,欧了。
其实事情远没有你想得这么简单。你需要加密字符串对吧,你把字符串转换成了NSData,然后你需要提取出这个NSData中的字符信息(用来当做GET请求的参数)。这时候你就傻眼了。你发现,这个加密后的NSData已经无法转换成NSString了,那还用什么来当做GET请求的参数呢?
今天,哥给大家提供一个用来将任意编码的二进制文件转换为文本,并能将这个文本反过来转换为二进制文件的category。
直接提供源码:
NSData+Binary.h 与 NSData+Binary.m
//// NSData+Binary.h//// http://home.cnblogs.com/u/YouXianMing///// Copyright (c) 2014年 Y.X. All rights reserved.//#import <Foundation/Foundation.h>@interface NSData (Binary)// 将不可识别二进制文件转换为可识别的文本文件- (NSString *)transformToVisibleString;@end
//// NSData+Binary.m//// http://home.cnblogs.com/u/YouXianMing///// Copyright (c) 2014年 Y.X. All rights reserved.//#import "NSData+Binary.h"@implementation NSData (Binary)- (NSString *)transformToVisibleString{ if (self) { NSString* strRet = @""; char* pBuff = (char*)[self bytes]; for (int i=0; i<self.length; i++) { strRet = [strRet stringByAppendingFormat:@"%02X", pBuff[i] & 0xFF]; } return strRet; } else { return nil; }}@end
NSString+Binary.h 与 NSString+Binary.m
//// NSString+Binary.h//// http://home.cnblogs.com/u/YouXianMing///// Copyright (c) 2014年 Y.X. All rights reserved.//#import <Foundation/Foundation.h>@interface NSString (Binary)// 将字符串转换成不可识别二进制文件- (NSData *)transformToBinaryData;@end
//// NSString+Binary.m//// http://home.cnblogs.com/u/YouXianMing///// Copyright (c) 2014年 Y.X. All rights reserved.//#import "NSString+Binary.h"@implementation NSString (Binary)- (NSData *)transformToBinaryData{ if (self) { // 将字符串转换成不可识别二进制文件 static unsigned char _map_ch2hex[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0, 0, 0, 0, 0, 0, 0, // :, ;, <, =, >, ?, @, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, }; unsigned char* bytes = (unsigned char*)malloc((self.length + 1) * sizeof(unsigned char)); [[self uppercaseString] getCString:(char*)bytes maxLength:self.length + 1 encoding:NSUTF8StringEncoding]; unsigned char *p1 = bytes, *p2 = bytes; unsigned long n = self.length / 2; for (int i = 0; i<n; i++) { *p1 = _map_ch2hex[*p2-‘0‘] * 0x10 + _map_ch2hex[*(p2+1)-‘0‘]; p1++; p2 += 2; } NSData* toData =http://www.mamicode.com/ [NSData dataWithBytes:bytes length:n]; return toData; } else { return nil; }}@end
以下两处是核心源码:
注:
为何不直接提供各种加密解密算法现成的源码呢?其实,本人只是提供给大家一个工具,用来将任意编码的二进制文件转换为文本,并能将这个文本反过来转换为二进制文件的category。面向对象设计中遵循单一职责原则,为了能模块化,让大家好封装而已。至于怎么去封装那些加密解密算法就是体力活了,本人提供的这个,就是你能用着舒服的很核心的部件之一。
加密解密再也不是你的噩梦
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。