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];
}