IOS 存储安全 Base64

 

 

参考网站:http://zh.wikipedia.org/wiki/Base64   维基百科

 

或者上百度百科

 

  • 是网络上使用最广泛的编码系统,能够将任何二进制数据,转换成只有 65 个字符组成的文本文件
  • a~z,A~Z,0~9,+,/,=
  • Base 64 编码后的结果能够反算,不够安全
  • Base 64 是所有现代加密算法的基础算法

 

编码方式:将二进制数  每 6 个一分 ,最后不够末尾补零,每补两个0就加一个=号

终端命令:

# 将 10.jpg 进行 base64 编码,生成 10.txt 文件

$ base64 10.jpg -o 10.txt

 

# 将 10.txt 解码生成 1.jpg 文件

$ base64 -D 10.txt -o 1.jpg

 

# 将字符串 Man 进行 base64 编码

$ echo -n "Man" | base64

 

# 将字符串 TWFu 解码

$ echo -n "TWFu" | base64 -D

 

 

IOS代码:(IOS7.0 添加的功能)

@interface NSData (NSDataBase64Encoding)

 

//  将  加密的字符串解码成二进制数  如果字符串不对就返回nil

- (instancetype)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions)options NS_AVAILABLE(10_9, 7_0);

 

// 将 UTF-8 encoded NSData  解码成二进制数  如果 base64Data  不对就返回nil

- (instancetype)initWithBase64EncodedData:(NSData *)base64Data options:(NSDataBase64DecodingOptions)options NS_AVAILABLE(10_9, 7_0);

 

// 二进制数base64加密返回 字符串

- (NSString *)base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)options NS_AVAILABLE(10_9, 7_0);

 

// 二进制数base64加密返回 UTF-8 encoded NSData

- (NSData *)base64EncodedDataWithOptions:(NSDataBase64EncodingOptions)options NS_AVAILABLE(10_9, 7_0);

 

@end

 

typedef NS_OPTIONS(NSUInteger, NSDataBase64EncodingOptions) {

  // 默认 没有长度限制  , 使用以下 分别是 64  76 个字符长度 加分隔符\n

    NSDataBase64Encoding64CharacterLineLength = 1UL << 0,

    NSDataBase64Encoding76CharacterLineLength = 1UL << 1,

 

    // 选择分隔方法 回车   换行

    NSDataBase64EncodingEndLineWithCarriageReturn = 1UL << 4,

    NSDataBase64EncodingEndLineWithLineFeed = 1UL << 5,

 

} NS_ENUM_AVAILABLE(10_9, 7_0);

 

 

 

  • 示例代码

#pragma mark - base64

///  编码:A => QQ==

- (NSString *)base64Encode:(NSString *)string {

    // 1. 将字符串转换成二进制数据

    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

 

    // 2. 利用 iOS 7.0 的方法,直接 base64 编码

    return [data base64EncodedStringWithOptions:0];

}

 

///  解码:QQ== => A

- (NSString *)base64Decode:(NSString *)string {

    // 1. 将base64编码后的字符串,解码成二进制数据

    NSData *data = [[NSData alloc] initWithBase64EncodedString:string options:0];

    

    // 2. 返回解码后的字符串

    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

}

 

posted @ 2015-06-09 02:11  风中一场梦  阅读(1540)  评论(0编辑  收藏  举报