Base64编码解码原理详解

原创 2016年06月01日 00:51:58

Base64编码解码原理详解

1. Base64字符的组成部分

Base64所用字符: 0,1,2 ….9 A,B,C,D…Z a,b,c,d…z + /
对应ASCII: 48,49…58,65,66…90,97,98…122, 43,47

2. 10个数字,26个大写字母,26个小写字母,1个+,一个 / 刚好64个字符

3. Base64是将每3个字符转化为4个字符,即(3*8bit=4*6bit),如果文本结尾不足3个字符,对转化为6为字符后,后面剩余的二进制位可能是2位或者4位(因为是N%6),余数为0时代表整除了,在剩余二进制位后面补0至6个二进制位,再在结尾加=号,使编码后的字符满足(N*8+等号个数)/6=base64的字符个数,说白了,如果N*8%6后余2个二进制位,就补2个=,余4个二进制位就补一个=,整除不补=。

4. Base64编码对应的字符表

这里写图片描述

5. 对字符个数是3的倍数(N*8%6=0)的字符串进行Base64编码

原文:         p           h         p

对应ASCII: 01110000   01101000  01110000

每6位分割:  011100  000110  100001 110000  |

对应10进制值:  28      6       33     48

Base64对应的字符:c     G        h      w

最后php=cGhw(base64)

6. 对字符个数为N*8%6=2的字符串进行base64编码

原文:        r        a         n       l 

ASCII值:01110010 01100001 01101110 011011006位分割:011100  100110 000101 101110 | 011011  00 0000  xxxxxx  xxxxxx |

对应10进制值:28      38    5       46    27       0         =       =
对应base64字符: c    m     F       u     b       A          =       = 

结果: ranl=cmFubA==(base64)

7. 对字符个数为N*8%6=4的字符串进行base64编码

原文           h          a         c         k          e

ASCII值:    01101000  01100001  01100011  01101011   011001016位分割:  011010  000110  000101  100011 | 011010  110110  0101 00    xxxxxx |

对应10进制值: 26       6      5       35      26      54       20         =

对应base64字符: a      G      F        j       a       2        U         =

结果 hacke=aGFja2U=(base64)

8. Base64对于中文的不同编码可能会出现不同的结果,具体要看中文用的是什么编码。

9. 总结,看懂了base64的编码过程,当前解码的过程也就明白了,在这儿我就不多讲了,后面有时间再发布base64的编码和解码的源代码。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

base64原理解析

开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了。实际 上Base64已经简单到不能再简单了,如果对它的理解还是模棱两可实在不应该。大概介绍一下Base64的相关内容,花几分钟时间...

BASE64 编码原理

unit uBase64; { 编码原理: 将3个字节转换成4个字节((3 X 8)=24=(4X6)),先读入3个字节, 每读一个字节,左移8位,再右移四次,每次6位,这样就有4...

原生Base64编码/解码(OC与Swift)

Objective-C     NSString *plainString = @"foo";     Encoding     NSData *plainData = [plainString...
  • pjk1129
  • pjk1129
  • 2015年11月25日 19:28
  • 7967

BASE64编码简介

BASE64是一种编码方式,通常用于把二进制数据编码为可写的字符形式的数据。 这是一种可逆的编码方式。 编码后的数据是一个字符串,其中包含的字符为:A-Z、a-z、0-9、+、/ 共64个字符...

php函数base64_encode后的参数包含加号解析出错的解决方案

在进入主题之前我们先来看这样如下代码,test.php

base64编解码

网上有很多base64的编码算法,也有很多C++写好的函数或者类,当然可以直接添加到工程中应用, 这里说一个简单的方法: Qt中, QByteArray QByteArray::toBase64...

Java如何进行Base64的编码(Encode)与解码(Decode)?

Java进行Base64的编码(Encode)与解码(Decode)的几种方式与区别..

让你完全理解base64是怎么回事

HTTP将BASE64-编码用于基本认证和摘要认证,在几种HTTP扩展中也使用了该编码。 Base-64编码保证了二进制数据的安全 Base-64编码可以将任意一组字节转换为较长的常见文本...

base64加密原理详解

base64加密原理详解          声明:本文是在看了他人总结,并摘抄大部分图文,和少量自己的总结写成          原作者地址链接:Base64算法原理       Base64编...
  • aozeahj
  • aozeahj
  • 2016年09月11日 23:18
  • 3152

base64加密原理及作用

参考文章http://www.cnblogs.com/hongru/archive/2012/01/14/2321397.html --base64的编码都是按字符串长度,以每3个8bit的字符为...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Base64编码解码原理详解
举报原因:
原因补充:

(最多只允许输入30个字)