base64算法能把任何二进制数据转换成文本文件, 二进制数据默认是按照8位一字节进行编码的,base64编码则是按照特定的字符表按照6位一分,最终得到的数值。每差一位,末位补两个0.对应字符表中的=号。所以base64编码比较容易辨认,如果文本最后面是等号,就有很大可能是base64编码。
简介
- 是网络上使用最广泛的编码系统,能够将任何二进制数据,转换成只有 65 个字符组成的文本文件
a~z,A~Z,0~9,+,/,=
Base 64
编码后的结果能够反算,不够安全Base 64
是所有现代加密算法的基础算法
存在的问题
- 使用
Base64
不能直接看到用户密码的明文 - 但是
Base64
的算法是公开的,并且算法可逆,安全性并不好
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self loadUserInfo];
// 测试base64
NSLog(@"编码 %@", [self base64Encode:@"A"]);
NSLog(@"解码 %@", [self base64Decode:@"QQ=="]);
}
#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];
}