Base64 编码特点
标准base64只有64个字符(英文大小写、数字和+、/)以及用作后缀等号;
base64是把3个字节变成4个可打印字符,所以base64编码后的字符串一定能被4整除(不算用作后缀的等号);
等号一定用作后缀,且数目一定是0个、1个或2个。这是因为如果原文长度不能被3整除,base64要在后面添加\0凑齐3n位。
为了正确还原,添加了几个\0就加上几个等号。显然添加等号的数目只能是0、1或2;严格来说base64不能算是一种加密,只能说是编码转换。使用base64的初衷。是为了方便把含有不可见字符串的信息用可见字符串表示出来,以便复制粘贴;
Base64 编码特点
Base64是一种加料置位加密法,那为什么叫base64呢?因为无论明文是什么(比如汉字,特殊符号等),加密后的密文都只会变成字母A-Z、a-z和0-9 和+和/这64个字符,被他加密体后积一般会变成原来的4/3。
分析Base64编码原理
以一个简单的’AST’为例,简单介绍Base64编码的实现原理
编码过程:
假设有3个字符,首先先将他换成10进制ASCII码,然后转成2进制,少位用0补齐,保证8位。
因为ASCII码大小是一字节也就是8位,3个8位。又因为3*8=4*6,我们给他分成4分,每份6位。如果少位都用0补齐。
把6位码前2位加两个0,比如010000转完后就是00010000,这对计算机来说比较重要,变成了8位码。
将4个8位(也就是一字节)码按照RFC里的BASE64标准换算,下面也提供了标准表。
这样我们就得到了QVNU,也就是AST加密的结果。
Base64编码表
那么有3N个字符就是分别把3个转成4个了,那假如有3N+1个字符怎么办呢?
BASE64是这样规定的,剩下的用“=”补齐。
比如A这个字符转后为01000001末尾加4个0变为010000|010000查表得QQ差2个用=补齐。
因此A加密后是QQ==,对于3N+2情况
同理AS加密后为QVM=
这样就有了所有情况了。
Base64编码的C实现
https://www.zhihu.com/question/20304015
http://www.cnblogs.com/qq78292959/archive/2013/05/14/3077837.html