为了避免明码传递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. 关于Linux的总结(三)

    1.man_page.txt 1.内部命令:echo 查看内部命令帮助:help echo 或者 man echo 2.外部命令:ls 查看外部命令帮助:ls --help 或者 man ls 或者 ...

  2. 转:Nginx RTMP 功能研究

    看点: 1.    Nginx 配置信息与使用.  (支持 rtmp与HLS配置) 2.    有ffmpeg 编译与使用,    命令行方式来测试验证客户端使用. 转自:http://blog.cs ...

  3. CSS行高--line-height

    遇到的问题:在css中,不理解line-height:1与line-height:1px的区别 发现的过程:最近在学做一个网站的过程中,设置两行文字之间的行高时需要用到line-height,发现了这 ...

  4. HTML5와 CSS3 적용기

    HTML5의 DTD 선언 <!DOCTYPE html>  HTML5의 인코딩 선언 <meta charset="utf-8">  그리고나서는 새로 ...

  5. Bootstrap之Footer页尾布局(2015年05月28日)

    直接上页尾部分的代码: <!--采用container-fluid,使得整个页尾的宽度为100%,并设置它的背景色--><footer class="container-f ...

  6. Nginx - HTTP Configuration, Module Variables

    The HTTP Core module introduces a large set of variables that you can use within the value of direct ...

  7. NPOI读取Excel表格类

    public class NPOIHelper    {        private HSSFWorkbook workbook;        public static IWorkbook Lo ...

  8. fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    为完成老师的任务,用c++写个计算器,又去学点c++,结果就有各种问题,如题 http://www.cnblogs.com/newpanderking/articles/3372969.html 感谢 ...

  9. Android虚拟机运行问题之小结

    首先说一下关于虚拟机的技巧,以前我也总是感觉电脑运行虚拟机的时候老是卡,后来在看课堂直播时看到老师用的是Total Control,在网上搜“Total Control”就能能找到,比系统自带SDK运 ...

  10. %r与%s的区别

    %r用rper()方法处理对象 %s用str()方法处理对象 有些情况下,两者处理的结果是一样的,比如说处理int型对象. 例一: print "I am %d years old.&quo ...