博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
加密解密再也不是你的噩梦
阅读量:5093 次
发布时间:2019-06-13

本文共 2315 字,大约阅读时间需要 7 分钟。

加密解密再也不是你的噩梦

也许你在你的项目中用过加密解密,诸如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 
@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

NSString+Binary.h 与 NSString+Binary.m

////  NSString+Binary.h////  http://home.cnblogs.com/u/YouXianMing/////  Copyright (c) 2014年 Y.X. All rights reserved.//#import 
@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

以下两处是核心源码:

注:

为何不直接提供各种加密解密算法现成的源码呢?其实,本人只是提供给大家一个工具,用来将任意编码的二进制文件转换为文本,并能将这个文本反过来转换为二进制文件的category。面向对象设计中遵循单一职责原则,为了能模块化,让大家好封装而已。至于怎么去封装那些加密解密算法就是体力活了,本人提供的这个,就是你能用着舒服的很核心的部件之一。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/YouXianMing/p/3953234.html

你可能感兴趣的文章
ActiveMQ与spring整合
查看>>
web服务器
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
HDU 4635 Strongly connected
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>
strlen函数
查看>>
关于TFS2010使用常见问题
查看>>
软件工程团队作业3
查看>>
火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题...
查看>>
javascript之数组操作
查看>>
Python编译错误总结
查看>>
URL编码与解码
查看>>
Eclipse 安装SVN插件
查看>>