为什么要用base64编码。

1.base64是网络上最常见的用于传输8bit字节代码的编码方式之一。

有时我们需要把二进制数据编码为适合放在URL中的形式。

这时采用base64编码具有不可读性,即所编码的数据不会被人直接看出。

2.用于在http环境下传递较长的标识信息。

base64要求把三个8Bit的字节转换为四个6Bit的字节。

然后把6Bit再添加两位高位0,组成四个8Bit的字节。

也就是说,转换后的长度理论上将要比原来的长1/3.

编码规则:

1.把三个字符变成四个字符。

2.没76个字符加一个换行符。

3.最后的结束符也要处理。

3*8=4*6

内存1个字符占8位

转前: s 1 3

先转成ascii:对应 115 49 51

2进制: 01110011 00110001 00110011

6个一组(4组) 011100110011000100110011

然后才有后面的 011100 110011 000100 110011

然后计算机是8位8位的存数 6不够,自动就补两个高位0了

所有有了 高位补0

科学计算器输入 00011100 00110011 00000100 00110011

得到 28 51 4 51

NSString * str = @"123456";

NSData * dataAlvin = [str dataUsingEncoding:NSUTF8StringEncoding];

//    base64编码

NSData * encryptData = [dataAlvin AES128EncryptWithKey:@"key" iv:@"value"];

NSString * base64Str = [encryptData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

NSData * base64Data = [encryptData base64EncodedDataWithOptions:0];

NSLog(@"%@",base64Str);

//    base64解码

NSData * decodeData = [base64Data initWithBase64EncodedData:base64Data options:0];

NSData * decryptData = [decodeData AES128DecryptWithKey:@"key" iv:@"value"];

NSString * decryptStr = [[NSString alloc] initWithData:decryptData encoding:NSUTF8StringEncoding];

NSLog(@"%@",decryptStr);

加密后字符串 = NmNjqWz4rz3gRw5n2hEbQw==

加密前字符串 = 123456

你可能感兴趣的:(为什么要用base64编码。)