base64深入理解与判断base32base16

Posted 李白你好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了base64深入理解与判断base32base16相关的知识,希望对你有一定的参考价值。

加密原理

第一步:“M”、“a”、"n"对应的ASCII码值分别为77,97,110,对应的二进制值是01001101、01100001、01101110。如图第二三行所示,由此组成一个24位的二进制字符串。

第二步:如图红色框,将24位每6位二进制位一组分成四组,不足的补0。

第三步:在上面每一组前面补两个0,扩展成32个二进制位,此时变为四个字节:00010011、00010110、00000101、00101110。分别对应的值(Base64编码索引)为:19、22、5、46。

第四步:用上面的值在Base64编码表中进行查找,分别对应:T、W、F、u。因此“Man”Base64编码之后就变为:TWFu。

Base64、Base32和Base16的简单区别

  • Base64,包含大写字母(A-Z),小写字母(a-z),数字(0-9)以及+/;
  • Base32,只有大写字母(A-Z)和数字234567;
  • Base16,只有16进制的数据,其范围是数字(0-9),字母(ABCDEF)。

python代码实现

#coding=utf-8
import base64
import re
basestring="NEU1NDREMzE0RTQ0NTUzMjRFNDQ2NzMxNEU2QTVBNDQ0RTU0NTkzMTRFN0E1NTc4NEQ3QTQxMzI0RjQ0NTI0MzRFNTQ2MzMyNTE2QTUyNDI0RTQ0NjMzMTREN0E1NTMyNEU0NDZCMzM0RjU0NTUzMDRFNkI0OTMzNEY0NDUyNDM0RTU0NEQ3QTRENDQ1NTMxNEQ3QTQ5MzE0RTZBNTEzMTRFN0E0RDMzNEY1NDU1N0E0RDdBNDUzMDUxNTQ1MTMxNEU1NDU5MzE0RTQ0NTI0MjRFNDU1NTMxNEU1NDRENzg0RTU0NTkzMDUxNTQ1MjQ2NEU1NDU1MzI0RTQ0NTUzMzRFNTQ1OTMxNEU2QTU2NDI0RTQ0NTEzMTREN0E1MTMxNEU2QTUxMzE0RDdBNTUzMDRFNkI0OTMxNTE1NDUyNDI0RTU0NTUzMjUxNTQ1MjQyNEU0NTU5MzE0RTQ0NTEzMTRFN0E0MTMwNTE3QTU1MzI0RTU0NTU3QTRGNTQ1NTMxNEU1NDREMzM1MTU0NTI0MjRFNDU0RDMxNEU1NDVBNDM0RTU0NDkzMTRFNkE1MjQ2NEU2QjREMzA0RTZBNTUzMDRFNTQ1OTMxNEU1NDVBNDM0RDdBNDUzMTRENkE0RDc4NEU1NTQ1MzE0RTZBNTUzMjRFNkI0OTMwNTI1NDUyNDU0RTU0NEQzMjUxN0E1NjQyNEU0NTU5MzE0RDZBNUE0MzRFNkI0RDMxNEQ3QTUyNDU0RTZCNDk3QTRFNTQ1MTM0NEU1NDREMzI1MTZBNTI0NjRFNDQ1OTMxNEU0NDRENzg0RTU0NDkzMDUxN0E1MjQ1NEU2QjQ5MzM0RTQ0NTU3QTRFNTQ0OTMwNEU2QTU1Nzk0RTQ1NDUzMTRFNkE0RDc4NEU0NTU1MzE0RTZBNTU3QTRFNkI0OTMxNTE1NDUxMzQ0RTU0NTkzMjUxN0E1NTMyNEU1NDU5MzA1MjQ0NUE0MzRFNkE2NzMwNTE2QTU1MzI0RTZCNDk3QTRFNTQ1MTMzNEU1NDREMzE0RTZBNTEzNTRFN0E2QjMxNEU0NDRENzc0RTdBNTEzMDUxNkE1NTdBNEQ3QTQxMzE0RTZBNTU3NzRFNTQ1OTMwNEU1NDYzN0E0RTdBNkIzMTREN0E0RDc4NEU0NTQ1MzA0RTQ0NTUzMjRFNTQ1MTMwNTE1NDU1MzQ0RTU0NTU3QTRENTQ1NTMyNEU0NTQ1MzA1MjU0NTUzMTRFNkE1MTMxNEU1NDU1Nzk0RDdBNDUzMDUxNTQ1MTMwNEU1NDREMzA0RTU0NjM3NzRFNTQ2MzMxNEU0NDVBNDM0RTU1NDUzMDUxNTQ1NTMxNEU2QjQ1MzA1MTU0NTEzMzRFNTQ1MTMwNEU1NDYzNzc0RTQ1NEQzMTRENkE1NTMxNEQ3QTZCMzE0RTU0NTU3QTRFMzA0NTMwNTE1NDUyNDU0RTU0NDUzMjUxNkE1NTc5NEU1NDU5MzA1MjQ0NUE0NDRFNkE1MTMxNEU0NDU1MzI0RTU0NTUzMjUxNkE0RDc4NEU1NDQ5N0E0RDU0NTY0MjRFNTQ1OTMxNEU2QTVBNDM0RTQ1NTUzMDRGNTQ1NTdBNEU2QjREMzE1MTU0NTI0NzRFNTQ0OTMyNTE2QTVBNDQ0RTU0NTUzMTREN0E0RDc3NEQ3QTU1MzA1MjQ0NTU3QTRFNkI0OTMzNEU0NDUxMzI0RTU0NTE3QTRENTQ1NTc5NEU0NTQ5MzE0RTU0NEQ3NzRFN0E1MTMxNEQ3QTU1Nzk0RTQ0NTkzMTRFNTQ2MzM1NEU1NDU5N0E0RDU0NTI0NjRFNTQ1OTMxNEQ3QTU1MzA0RTU0NTkzMDUyNTQ1NTMyNEU2QjREMzE0RTZBNTUzMzRFNTQ0NTdBNEQ0NDU5MzQ0RTQ1NDkzMTRFNkE1QTQzNEQ3QTU1MzA0RTdBNTU3OTREN0E0NTMwNEY1NDYzMzU0RTU0NTEzMjUxNkE2MzM0NEU0NTQ5MzE0RDdBNEQ3NzRFNTQ1OTMxNEQ0NDU1MzI0RTQ0NTkzMDUyNTQ1NTMwNEU1NDREN0E0RDU0NTI0MjRFNDQ1NTMxNEU2QTU1MzA0RTQ1NDUzMTRGNDQ1NTMxNEQ3QTQ1MzE0RTZBNTI0MjRFNTQ1MTMyNTE2QTU5MzA0RTU0NjMzMTRFNkE1NTMyNEU1NTQ1MzA0RTQ0NTU3QTRFNDQ1NTMzNEQ0NDU1MzI0RTU0NjMzMjUxN0E1NjQyNEU0NTQ1MzE0RTU0NUE0MjRFNDU0NTMwNTI2QTU1MzA0RTQ0NTUzMzRENDQ1MjQ0NEU1NDQ5MzE0RTU0NEQzNTRFNTQ1NTMxNEQ3QTY0NDI0RTQ1NDUzMDUxN0E1NTMxNEU2QjQ5MzE0RDZBNTUzMjRFNDU1MTMyNTE3QTU5MzA0RTU0NTEzMTRFN0E1MTMxNEU2QjQ5N0E0RDU0NTU3OTREN0E0NTMxNTE1NDU1MzI0RTU0NTkzMjUxNkE1MjQ2NEU0NDZCMzE0RDdBNUE0NDRFN0E0MTMwNEU3QTU1Nzk0RTZCNDkzMjUxN0E1NTdBNEU0NTUxMzI1MTZBNEQzMTRFNDU1MTMxNEQ3QTVBNDM0RTdBNTEzMDRFNkE1MjQ1NEU2QjREMzE0RDZBNTI0NDRFNDU1MTMyNTE2QTYzMzA0RTU0NEQzMTRENkE1MTMyNEU1NDU1MzM0RjU0NTUzMjREN0E0NTMwNTI1NDUxMzI0RTU0NEQzMTRFNDQ1NTMyNEU0NDY3MzE0RTZBNUE0NDRFNTQ1OTMxNEU3QTU1Nzg0RDdBNDEzMjRGNDQ1MjQ1NEU1NDQ5MzI1MTZBNEQzMTRFNDQ2MzMxNEQ3QTU1MzI0RTQ0NkIzMzRGNTQ1NTMwNEU2QjQ5MzM0RjQ0NTI0MzRFNTQ0RDMyNTE2QTU1MzI0RTU0NDEzMTRFNkE1MTMxNEU3QTREMzM0RjU0NTU3QTREN0E0NTMwNTE1NDUxMzE0RTU0NTkzMTRFNDQ1NTc5NEU1NDY3MzE0RTU0NEQ3ODRFNTQ1OTMwNTE1NDUyNDY0RTU0NTUzMjRFNDQ1NTMzNEU1NDU5MzE0RTZBNTY0MjRFNDQ1MTMxNEQ3QTUxMzE0RTdBNDEzMTRFN0E1NTMwNEU2QjQ5MzE1MTU0NTI0MjRFNTQ1NTMyNTE1NDUyNDI0RTQ1NTkzMTRENkE0RDc3NEQ3QTU1MzA0RTQ0NTU3OTRFNTQ1NTdBNEY1NDU1MzE0RTU0NEQzMzUxNTQ1MjQyNEU0NTREMzE0RTU0NUE0MzRFNTQ0OTMxNEU3QTU1N0E0RDdBNDUzMjRFNDQ1NTMwNEU1NDU5MzE0RTU0NUE0MzREN0E0NTMxNEQ2QTRENzg0RTU1NDUzMTRFNkE1NTMyNEQ3QTQxMzA1MjU0NTEzNTRFNTQ0RDMyNTE3QTU1MzI0RTZBNDUzMTRENkE1NTMxNEU2QjREMzE0RDdBNTI0NTRFNkI0OTdBNEY1NDUyNDI0RTU0NDkzMTRFNDQ1NjQyNEU1NDQ5MzE0RDQ0NTUzMDREN0E0MTdBNEY1NDU1Nzc0RTU0NDU3QTUyNDQ0RTQ1"
while(1):
    base64_flag=0
    if(''in basestring):#flag形式
        break
    for i in basestring:
        if(i.islower()):
            basestring=base64.b64decode(basestring)#base64编码
            print "base64 encode"
            base64_flag=1
            break
    if(base64_flag):
        continue
    elif(re.match('^[G-Z]',basestring)):#base32编码
        print "base32 encode" 
        basestring=base64.b32decode(basestring)
        continue
    else:
        print "base16 encode" 
        basestring=base64.b16decode(basestring)#base16编码
        continue
print basestring

以上是关于base64深入理解与判断base32base16的主要内容,如果未能解决你的问题,请参考以下文章

Base64编码的深入认识与理解

深入理解“Base64”

如何判断字符串所用何种加密编码

BASE32与BASE64区别与UNION查询特性

Python中的base64模块

数据结构与算法之深入解析Base64编码的实现原理