Base64编码原理与应用

    xiaoxiao2021-03-25  133

    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

    转载请注明原文地址: https://ju.6miu.com/read-21633.html

    最新回复(0)