为了避免明码传递http内容,可以用base64编码后传输,收到方再解码,也方便了2进制数据的字符串式传输。

对于ios来说,google给提供了一个很好的工具类,方便进行base64编解码,当然也可以用openssl来进行,但这东西相对来

说比较麻烦。google给提供了3个文件就够了。

官网地址是:

http://code.google.com/p/google-toolbox-for-mac/

这里面有很多宝贝,如果自己找很难找到这3个文件,所以我加到附件里。解压后放到ios工程中即可使用。

使用方法简介:

查看GTMBase64.h头文件里面都有详细的函数说明,这里只举两个例子:

1.编码,即base64加密:

使用函数:

// decodeData:

//

/// Base64 decodes contents of the NSData object.

//

/// Returns:

///   A new autoreleased NSData with the decoded payload.  nil for any error.

//

+(NSData *)decodeData:(NSData *)data;

使用方法示例:

NSString *input =@"Hello World";

NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

data = [GTMBase64 encodeData:data];

NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSLog(@"base64String =%@ ", base64String);

如果成功的话,加密后的数据打印出来是:SGVsbG8sIFdvcmxk

这样就可以从http中传输了。

2.解码,即base64解密:

这里使用函数:

// decodeString:

//

/// Base64 decodes contents of the NSString.

//

/// Returns:

///   A new autoreleased NSData with the decoded payload.  nil for any error.

//

+(NSData *)decodeString:(NSString *)string;

使用方法是:

NSData *data =[GTMBase64 decodeString:@"SGVsbG8sIFdvcmxk"];

这样就将NSString类型的原文解析成了NSData类型的数据了,可以用

NSLog(@"data = %@",data);

打印出来,log输出16进制的例如:

Base64Test[5670:c07] data = <01000a6e 735f766f 645f3030 3102005c 81705900 00000000 005c8020 0101124c 803a0001 18beee29 11aef543 7a02e35c 012769ad 08619971 50e57f2c>

如果把data用NSString类型输出的话,内容是Hello, World

ios Base64编解码工具类及使用的更多相关文章

  1. Java 8实现BASE64编解码

    Java一直缺少BASE64编码 API,以至于通常在项目开发中会选用第三方的API实现.但是,Java 8实现了BASE64编解码API,它包含到java.util包.下面我会对Java 8的BAS ...

  2. Notepad++插件Base64编解码

    我们平常进行Base64编码需要自己写代码转换, 或者使用其他人编写的小工具程序, 也可以使用在线base64编码工具, 现在我们还可以使用Notepad++自带的插件, 进行Base64编码和解码, ...

  3. Delphi Base64 编解码函数

    Delphi 自带 Base64 编解码的单元, EncdDecd这个单元提供两套四个公开函数: 对流的编解码:procedure EncodeStream(Input, Output: TStrea ...

  4. Java实现BASE64编解码

    Java实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs BASE64和其它类似的编码算法通经常使用于转换二进制数据为文本数据,其目 ...

  5. Delphi 自带的 Base64 编解码函数

    今天帮别人解决一个关于 Base64 编解码的问题,竟然发现 Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个 ...

  6. openssl命令行Base64编解码

    openssl对base64编解码的规范支持较差,用它编解码的结果别的语言如php处理很不方便,注意的几点整理如下 1,如果php加密结果做base64编码长度小于64,则需要添加一个换行符opens ...

  7. python rsa 加密解密 (编解码,base64编解码)

    最近有需求,需要研究一下RSA加密解密安全:在网上百度了一下例子文章,很少有文章介绍怎么保存.传输.打印加密后的文本信息,都是千篇一律的.直接在一个脚本,加密后的文本信息赋于变量,然后立马调用解密.仔 ...

  8. H.264格式,iOS硬编解码 以及 iOS 11对HEVC硬编解码的支持

    H.264格式,iOS硬编解码 以及 iOS 11对HEVC硬编解码的支持 1,H.264格式 网络表示层NAL,如图H.264流由一帧一帧的NALU组成: SPS:序列参数集,作用于一系列连续的编码 ...

  9. python base64 编解码,转换成Opencv,PIL.Image图片格式

    二进制打开图片文件,base64编解码,转成Opencv格式: # coding: utf-8 import base64 import numpy as np import cv2 img_file ...

随机推荐

  1. 用继承实现XYPoint和Circle两个类

    #import <Foundation/Foundation.h> @protocol show @required -(void)printOn; @end @interface XYP ...

  2. scrapy_ip_agent

    #File name is rotate_useragent# -*- coding: UTF-8 -*- import randomimport urllib2import redisfrom sc ...

  3. SQL in与exists相关性能问题总结

    SQL  in与exists相关性能问题总结 in 和 exists in 和 exists的是DBA或开发人员日常工作学习中常用的基本运算符,今天我就这两个所带来的性能问题进行分析总结,方便自己与他 ...

  4. Linux系统root用户忘记密码解决方法

    一:在linux系统启动时(如下图),按e键 二:进入到设置页面,定位到如下行: 三:按e键,进入输入界面 四:在编辑行最后面,空格,输入single,回车后回到第二步界面,只是后面多了single ...

  5. poj 3164 最小树形图

    思路:就是裸的最小树形图~ #include<iostream> #include<cstdio> #include<cstring> #include<cm ...

  6. PHP,单双引号的区别‘“”“”’

    一.转义 单引号:只转义\'和\\,其他不转义 双引号:都转义 二.变量解析 单引号:无法解析变量(原样输出) 双引号:可以解析变量 三.速度 单引号:更快 双引号:要分析是否有变量,转义内容更多 结 ...

  7. JavaScript面试问题:事件委托和this

            JavaScript不仅门槛低,而且是一门有趣.功能强大和非常重要的语言.各行各业的人发现自己最混乱的选择是JavaSscript编程语言.由 于有着各种各样的背景,所以不是每个人都对 ...

  8. New MVC World

    Note: /Controllers:controllers respond to input from the browser,decide what to do with it,and retur ...

  9. Linux 命令 - crontab: 任务调度

    cron 是一个 Linux 下的定时执行工具,可以在无需人工干预的情况下运行作业.守护进程 cron 会读取 crontab 文件,根据配置在指定的时间执行任务.contab 命令用来添加.删除.显 ...

  10. MySql索引的优缺点

    优点 有了索引.对于记录数量很多的表,可以提高查询速度. 缺点 索引是占用空间的. 索引会影响update insert delete速度 ALERT!!! 1.索引要创建在where和join用到的 ...