iOS 中的 Base64 编码

Base64 是一种基于 64 个可打印字符来表示二进制数据编码方式,广泛运用在处理文本数据的场合,表示、传输、存储一些二进制数据,包括 MIME 的电子邮件及 XML 的一些复杂数据。

通过 Base64 编码后的数据比原始数据略长,为原来的 4/3,原因是 Base64 是将三个字节拆分成 4 个 6bit 段进行编码。

Base64 编码的具体步骤如下

  • 对于原始数据,以每 3 个 8bit 为一组,获得 24bit
  • 将 24bit 划分为 4 组,每组 6bit
  • 将每组 bit 的高位补充 2 个 0,获得 4 个 8bit
  • 将 4 个 8bit 转换为 10 进制,对照 Base64 参照表进行编码替换
Base64编码参照表

这里需要注意的点

  • 对于 URL 而言,Base64 参照表的 "+" 和 "/" 是保留字,不会进行 URL 编码,这样会对解析 URL 产生错误,因此需要先将它们替换成诸如 "-_" 等字符,然后参与 URL 编码
  • 由于编码的是 8bit 字符,因此对于超过 8bit 的字符,如中文字符等,需要进行 UTF8 编码后再进行 Base64 编码
  • 字符串末尾有时不足 3 个字符,需要补充 "=" 进行占位,具体来说
    • 对于末尾只有 1 个字符的情况,转换为 8bit 二进制数据后,末尾补 0,填充至 12bit,转换为 2 个 Base64 编码字符,然后再补充 2 个 "=" 作为结束符
    • 对于末尾只有 2 个字符的情况,转换为 8bit 二进制数据后,末尾补 0,填充至 18bit,转换为 3 个 Base64 编码字符,然后再补充 1 个 "=" 作为结束符
Basse64末尾补0

iOS 中的 Base64 编码与解码如下所示

    NSString *target = @"TEST";
    NSData *data = [target dataUsingEncoding:NSUTF8StringEncoding];
    NSString *base64Str = [data base64EncodedStringWithOptions:nil];
    NSString *base64DecodeStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 了解CTF的朋友们,肯定对一种题型不陌生——Misc,Misc里面有各种各样的编码,眼花缭乱的文本通过层层解码后得...
    Ackerzy阅读 11,933评论 1 30
  • 1、Base64编码原理 下图为Base64编码索引表: 字符选用了"A-Z、a-z、0-9、+、/" 64个可打...
    M_JCs阅读 1,817评论 1 9
  • 一、什么是Base64编码? Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一...
    知猪侠_DC阅读 1,361评论 2 50
  • 相关文章:Base64 之 JavaScript 实现在Web前端还可以这样实现Base64 什么是Base64 ...
    JSON_NULL阅读 1,694评论 0 4
  • 又是一个万里无云的周五,惯例去校医院开药。暑假期间的校医院,看起来更像是一个老年社区医院。清晨的风穿过大堂...
    帆帆帆er阅读 150评论 0 0