https://www.qqxiuzi.cn/bianma/base64.htm
一眼就解密
一看就晓得是base64,问就是做多了(base64=大小写加数字和=)
base编码概念
此博客列举的比较多,我信
https://blog.csdn.net/qq_53105813/article/details/127626450
简单聊几个常见的吧
base16
特征特点:密文由16个字符(0-9,A-F)组成
编码方式比较简单:
将数据(根据ASCII编码,UTF-8编码等)转成对应的二进制数,不足8比特位高位补0
然后将所有的二进制全部串起来,4个二进制位为一组,将每组二进制数分别转换成十进制,在下述表格中找到对应的编码串接起来就是Base16编码
示例
假如对smile进行base16加密:
先对照ascii码表转换为二进制
四个一组转换为16进制
字符 | s | m | i | l | e |
ascii | 115 | 109 | 105 | 108 | 101 |
二进制 | 0111 0011 | 0110 1101 | 0110 1001 | 0110 1100 | 0110 0101 |
base16 | 73 | 6D | 69 | 6C | 65 |
转换出来就是736D696C65
base32
特征特点:密文由32个字符(A-Z,2-7)组成,末尾可能会有‘=’,但最多有6个
Base32将任意字符串按照字节进行切分,并将每个字节对应的二进制值(不足8比特高位补0)串联起来,按照5比特一组进行切分(不足五位在其末尾补零),并将每组二进制值转换成十进制来对应32个可打印字符中的一个。
由于传输数据的单位是字节(即8个二进制位).所以分割之前的二进制位数是40的倍数(40是5和8的最小公倍数),如果不足40位,则在编码后数据补充"=",一个"="相当于一个组(5个二进制位)
示例:
首先对照ascii表找到对应值,接着转换为二进制,5位一组,末尾不足五位补零,但是这里只用到两组共10比特,还差30比特达到40比特,按照5比特一组还需6组,则在末尾填充6个“=”
字符 | s |
ascii | 115 |
二进制 | 01110 011 00 |
base32 | OM====== |
base64
Base64编码是使用64个可打印ASCII字符(A-Z、a-z、0-9、+、/)将任意字节序列数据编码成ASCII字符串,另有“=”符号用作后缀用途
Base64将输入字符串按字节切分,取得每个字节对应的二进制值(若不足8比特则高位补0),然后将这些二进制数值串联起来,再按照6比特一组进行切分,最后一组若不足6比特则末尾补0。将每组二进制值转换成十进制,然后在下述表格中找到对应的符号并串联起来就是Base64编码结果。
Base64编码将串起来的二进制以6位进行分割,所以分切之前的二进制位数应该是24的倍数(即6,8的最小公倍数),如果不足24位,则在编码后数据后面添加"=",一个"="想当于6个二进制位
示例:
按照ascii表转换对应值,然后经过比对,转换为base64编码,不足24字节(4组),在末尾补=
字符 | s |
ascii | 115 |
二进制 | 011100 110000 |
base64 | cw== |