美文网首页
Base64编码原理:iOS视角

Base64编码原理:iOS视角

作者: 司空123 | 来源:发表于2020-08-18 16:23 被阅读0次
Base64编码表.png

Base64是一种基于64个可打印字符来表示二进制数据的方法。是一种编码方法,有自己的编码表,所以称为Base64,是因为其使用64个字符来对任意二进制数据进行编码,同理有Base32、Base16编码。Base64编码是从二进制到字符的过程。

编码原理:

1.Base64是基于二进制进行操作的
2.将二进制流每3个字节一组(一共是3x8=24bit),划为4组,每组6个bit,高位分别用0补齐;
3.这样我们得到4个数字索引,然后查表,获得相应的4个字符,就是编码后的字符串。
4.Base64编码会把3字节的二进制数据编码为4字节的文本数据,所以长度会增加1/3。

编码原理很简单,接下来用代码分析一下:

    NSString *target = @"012"; // 1
    NSData *data = [target dataUsingEncoding:NSUTF8StringEncoding];//2
    NSString *base64Str = [data base64EncodedStringWithOptions:0];//3
    NSLog(@"%@",base64Str);
  1. 用字符串012测试编码过程及结果
  2. 将字符串转成字节形式
  3. 使用OC api 进行编码
  4. 输出编码后的结果是 MDEy

第2步得到的data一共3个字节24个bit位,16进制表示为{0X30,0X31,0X32} 二进制表示为 0011 0000 0011 0001 0011 0010 按照6bit一组进行截取,然后去编码表查询对应字符,结果为MDEy,如下如:

image.png

特殊处理:
1如果要编码的二进制数据不是3的倍数,最后会剩下1个或2个字节,Base64用\x00字节在末尾补足,再在编码的末尾加上1个或2个=号,表示补了多少字节,补了几个字节就加几个=号,解码的时候,会自动去掉。

2.由于=字符也可能出现在Base64编码中,但= 用在URL、Cookie里面会造成歧义,所以,很多Base64编码后会把=去掉。
去掉=后怎么解码呢?因为Base64是把3个字节变为4个字节,所以,Base64编码的长度永远是4的倍数,因此,需要加上=把Base64字符串的长度变为4的倍数,就可以正常解码了。

3.由于标准的Base64编码后可能出现字符+ 和 /,在URL中就不能直接作为参数,所以又有一种"url safe"的base64编码,其实就是把字符+和/分别变成-和
比如:有些平台上用的Base64 URL 是标准Base64编码的一个变种,分别用 -、
替换标准Base64编码结果中的 + 、 / ,并删除结果最后的 =

相关文章

  • Base64编码简单总结

    1 Base64编码原理 随着iOS7正式版推出,Apple增加了使用Base64编解码的支持。Base64编码之...

  • iOS URL安全的Base64编码、解码

    参考iOS开发探索-Base64编码iOS URL编码&base64编码URL安全的Base64编码,解码 为什么...

  • Base64编码原理:iOS视角

    Base64是一种基于64个可打印字符来表示二进制数据的方法。是一种编码方法,有自己的编码表,所以称为Base64...

  • base64编码解码原理散图

    base64编码出现原因: base64转码原理000.png base64编码原理: base64转码原理.pn...

  • BASE64 编码简析

    Base64编码: <1>·Base64编码简介: <2>·使用Base64的原因: <3>·编码原理: 成这个字...

  • Base64编码原理与应用

    Base64编码原理与应用

  • iOS开发之Base64编码与解码

    原理: 调用Base64编码与解码 //64编码 //64解码

  • 编码与加密

    一、阅读基础 1、基础 一、Base64编码与解码 2、原理 4、代码实现 Base64编码 Base64解码 二...

  • Base64

    Base64简介 Base64 原理解析 编码实现 Base64简介 命令行运行base64编码和解码 对文件操作...

  • base64 编码原理

    近期接触AI图片识别,图片转码,从而接触到base64编码原理。为后续实现此编码原理,先学习了解~ base64编...

网友评论

      本文标题:Base64编码原理:iOS视角

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