美文网首页
iOS--base64的理解与实践

iOS--base64的理解与实践

作者: OXHO | 来源:发表于2019-05-04 03:49 被阅读0次

我们利用终端演示一下base64编码。

误区:base64并非加密算法,它是一种数据编码方式,虽然是可逆的,但是它的编码方式是公开的,无所谓加密。

现在,我们桌面上有一张图片名字为:1111111.png


2222.png

我们利用命令“base64 1111111.png -o abc.txt”输出 base64编码以后的c文件。


WX20190504-032649@2x.png

abc.txt就是对图片编码以后的文件,

可以利用命令“base64 abc.txt -o tutu.png -D”
-D代表解码


cheng g

成功的导出了新的图,和1111111.png一样的tutu.png

原理:
base64其实最重要的就是这张表,


WX20190504-033331@2x.png

A-Z
a-z
0-9
/ + =
编码的时候,机制会利用0和1进行编码,6个为一组,24位。
010101 010010 11101 11
位数不足6位的,会在后面默认补0,上面的这串数字会变成
010101 010010 11101 110000,最后补位的数字,会变成“=”,这就是我们在很多base64编码后的文件末尾,见到很多“=”,“=”只会出现在末尾。

重点: 对一个二进制数据进行编码,文件会变大! 原有文件的4/3 , 多了1/3。

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
    
    
}
//给一个字符 编码
-(NSString *)base64Endcode:(NSString *)str{
   NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];
    return [data base64EncodedStringWithOptions:0];
}


//给一个编码我对其进行解密
-(NSString *)base64Decode:(NSString *)str{
    NSData * data = [[NSData alloc] initWithBase64EncodedString:str options:0];
    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}


-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    NSLog(@"编码:%@",[self base64Endcode:@"A"]);
    
    NSLog(@"解码:%@",[self base64Decode:@"QQ=="]);
}

相关文章

网友评论

      本文标题:iOS--base64的理解与实践

      本文链接:https://www.haomeiwen.com/subject/mwmtoqtx.html