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