base64编码学习总结

为什么需要使用base64编码

  • 使用HTTP协议传输二进制数据可能会出现无法预知的错误,参考有关使用HTTP协议传输二进制文件
  • 很多场景下的数据传输要求数据只能由简单通用的字符组成,比如HTTP协议要求请求的首行和请求头都必须是ASCII编码
  • 很多比较老的协议还是只支持纯文本的,比如SMTP协议
  • 提升效率:用Data URL技术,允许使用Base64对图片或其他文件的二进制数据进行编码,将其作为文本字符串嵌入网页中,避免不必要的外部资源加载
  • 参考资料

base64如何编码?

  • 对应一个base 64 编码表
    • 包含大小写字母52个,0-9的数字10个,还有+/两个符号
  • 每3个原始字符编码成4个字符
    • 编码后的每个字符最高2位一定是0
    • 范围是[0, 63]
    • 如果字符数不是3的倍数,后面用零补齐
    • 末尾的0x00000000=表示
      • 所以细心的读者可以常常发现:base64编码后的字符串最后会有=符号
  • 编码后增加换行符
    • base64在RFC2045有规定:Base64一行不能超过76个字符,超过则添加回车换行符(windows平台下则为\n

base如何解码

  1. 去掉多余的=
  2. 只需要按照编码表,逆向转成二进制数据
  3. 每个字符的二进制去掉最高的两位,最后拼接在一起,就是编码前的二进制数据流

常用的C++ base64 编码和解码的库

总结

  • base64将二进制字符转换成64个可见的文本字符,在某些场景下方便传输
  • base64不是一种加密方法,操作的本质不是加密
posted @ 2019-10-21 00:06  HelloWooo  阅读(362)  评论(0编辑  收藏  举报