美文网首页加密
iOS 中的 Base64 编码

iOS 中的 Base64 编码

作者: Yasic | 来源:发表于2019-01-02 10:11 被阅读13次

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];

相关文章

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

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

  • iOS 与 web 交互 传图

    web 端将图片 base64 编码后传给 iOS 端,会在 base64 编码前加上 data:image/pn...

  • Base64编码简单总结

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

  • 加密编码总结

    url编码 base64编码 工作中碰到url与base64配合加解密的问题,base64编码后的字符串中可能含有...

  • iOS Base64URL编码 等同于java中的Base64.

    一. iOS Base64URL编码:java中,在进行base64编码时会看到类似如下代码: 其中参数的含义是:...

  • iOS Base64URL编码 等同于java中的Base64.

    一. iOS Base64URL编码:java中,在进行base64编码时会看到类似如下代码: 其中参数的含义是:...

  • SMTP整理

    账号:BASE64编码的账号 密码:BASE64编码的密码 快速BASE64编码网址: http://tools....

  • Base64编码

    在Java 8中,Base64编码已经成为Java类库的标准。 Java 8 内置了 Base64 编码的编码器和...

  • BASE64 编码简析

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

  • iOS 中的 Base64 编码

    Base64 是一种基于 64 个可打印字符来表示二进制数据编码方式,广泛运用在处理文本数据的场合,表示、传输、存...

网友评论

    本文标题:iOS 中的 Base64 编码

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