BASE32编码 --记录

一、Base32数据编码简介

Base32这种数据编码机制,主要用来把二进制数据编码成可见的字符串,其编码规则是:任意给定一个二进制数据,以5个位(bit)为一组进行切分(base64以6个位(bit)为一组),对切分而成的每个组进行编码得到1个可见字符。Base32编码表字符集中的字符总数为25=32个,这也是Base32名字的由来。以下是我在网上找的一个标准的Base32编码表,如表1所示。

表1 标准Base编码表 

二、编码演示

下面以一个具体的例子说明Base32的编码过程。这里以“bhst”字符串进行编码。步骤如下:

1.字符“bhst”取ASCII码之后,对其转换成二进制得到“1100010,1101000,1110011,1110100,”共四个字节,28个bit的二进制串。注:因为base32是属于传输8bit字节代码的编码方式,所以这里要对“bhst”字符串对应的二进制最高位加0变成每组8个bit。组成32个bit的二进制串。

2.以5个bit为一组对“bhst”字符串对应的二进制串进行切分。得到“01100,01001,10100,00111,00110,11101,00000”7个字节的“bhst”二进制串。注:每组的二进制串不足5个用0补充。

3.计算每组二进制串所对应的十进制,然后参考标准Base32编码表,找出所对应的编码字符,组合成密文。注:最后一个分组位数不足4个的时候,则用字符“=”编码。

如表2所示:

表2 以5个bit为一组切分得到7个字节的目标二进制串及对应的标准Base32编字符

三、实例解码

编码的算法知道了,想要解码反推回来就可以了。这里以游戏中的密文为例。“I4AG6AA=”步骤如下:

1、对密文中的编码字符(对照标准Base32编码表)找出所对应的十进制编码值。分别为: 8   28   0   6   30   0   0。

2、把十进制的编码值转换成二进制,不足5个bit用0补充。得到:01000,11100,00000,00110,11110,00000,00000

3、组合每组的二进制串,并以8个bit为一组进行切分。得到:01000111,00000000,01101111,00000000,00000000

4、还原每组二进制串得到明文的ASCII码71 0 111 0 0,还原成字符为Go。

如表3所示:

四、总结

以后见到有一串固定的字符串和‘=’以及算法中有rol eax,5等字样要想起来这个是base32的算法 顺便学到一个方法来排除输入的是不是自己想要的字符通过预先设置一个字符hash表,然后查询,如果不在的话就返回FALSE

BASE32编码--记录相关推荐

  1. BASE32编码 --记录

    一.Base32数据编码简介 Base32这种数据编码机制,主要用来把二进制数据编码成可见的字符串,其编码规则是:任意给定一个二进制数据,以5个位(bit)为一组进行切分(base64以6个位(bit ...

  2. 磁力链接的BASE32编码向HEX编码的转换

    1.传统格式 磁力链接(简称"磁链")是一种下载链接格式,下载时的效果相当于使用种子文件进行下载,但是比种子文件便于记录与传播. 传统的磁力链接格式,举例如下: magnet:?x ...

  3. 编码系列--Base32编码

    0.写在前面 这里讨论的编码主要的目的是将不可显示的二进制数组转变为可显示的字符串,包括其逆运算.通过特定的协议传输数据,或者加密解密的时候都会用到类似的方法. 在这类运算中用的比较多的是Base64 ...

  4. ffmpeg h265编码_基于ffmpeg库mp4编码记录。

    要讨论的话题主要为以下: 话题1:音频流选用aac编码格式需要注意的地方. 话题2:音频流视频流同步需要注意的地方. 基本模式如下所示: 关于话题1部分,背景工作于基于海思平台35XX系列的SDK开发 ...

  5. 一张图片中的分离数据+十进制删改十六进制+连续base32和64编码+okk编码题目--rsa中求d题目

    目录 一张图片题目 题目rsa中求d 题目来源ctf杂项50 一张图片题目 1.图片用010打开后,发现这张图片数据过多,搜索到flag.zip压缩包文件可能需要分离文件 2.使用binwaik发现有 ...

  6. 编码、解码、总结大全

    加密方式 1.摩斯编码 特征特点:用点(.)和划(-)来编码范围0-9.A-Z的字符,字母不区分大小写,两个字母之间的空格用斜杠(/)或者三个点(.)或者一个划(-)表示,两个单词之间的间隔是七个点( ...

  7. 序列化和反序列化刷题记录

    BUU CODE REVIEW\ *反序列化 md5 <?php /*** Created by PhpStorm.* User: jinzhao* Date: 2019/10/6* Time: ...

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

    base64.base32.base16 区别: 1.Base64编码是使用64个可打印ASCII字符(A-Z.a-z.0-9.+./)将任意字节序列数据编码成ASCII字符串,另有"=&q ...

  9. 一文带你读懂base64编码

    hi,大家好,我是开发者FTD.相信很多同学在工作中,经常会用到Base64编码,那大家知道为什么会有Base64编码吗?我们为什么要使用它呢,它又是怎么实现的呢?下面就让我们来一起深入探究一下Bas ...

  10. python容量变化类型有哪些_python基础数据类型补充以及编码的进阶

    一. 基础数据类型补充内容 1.1 字符串 字符串咱们之前已经讲了一些非常重要的方法,剩下还有一些方法虽然不是那么重要,但是也算是比较常用,在此给大家在补充一些,需要大家尽量记住. #captaliz ...

最新文章

  1. Vue教程3【使用Vue脚手架】render ref props minin scoped $emit $bus 消息订阅发布 动画
  2. 初步认识Linux oops 消息
  3. redis set数据类型常用命令及应用场景
  4. mysql 乘法_测试面试题集Python花式打印九九乘法口诀表
  5. html表单转换文档代码,把HTML表单提交的数据转化成XML文件 (转)
  6. clickinrefresh.php,IDCZE_v3.0 IDCZE商业导航系统全新仿照114la网址导航 - 下载 - 搜珍网...
  7. opengl游戏引擎源码_我用C++复刻了这款上世纪最伟大的游戏
  8. 将PDF文件进行文件的编辑需要利用什么软件
  9. 完美C Perfect C 丰胸胶囊
  10. 计算机专业顶岗实训,计算机专业学生的顶岗实习
  11. CATIA V6二次开发——Automation之对象
  12. perforce p4v linux,Perforce p4v下载
  13. 工作日志、周报的意义
  14. 左移寄存器vhdl_基于VHDL的移位寄存器设计
  15. 知乎周源微信_每周源代码33-Google Chrome中的Microsoft Open Source
  16. java和基岩版凋零打法,六种凋零打法介绍 凋零还可以这么打
  17. 业务流程审批系统java源码_java毕业设计_springboot框架的基于企业流程审批系统...
  18. java获取emf中的文字_一键提取图片中的文字的5种方法!
  19. HTK 语音识别 ASK
  20. python中time库引用不正确的_time库的引用

热门文章

  1. 软件项目管理测试文档,软件项目管理具体方法体系示例
  2. 北京功略----玩水篇
  3. Citrix虚拟桌面高拍仪上传图片调优方法
  4. Python3.4中文手册chm,3.7中文手册HTML
  5. DTCC2019数据风云,十年变迁 第十届中国数据库技术大会隆重启动
  6. MulT: An End-to-End Multitask Learning Transformer 多任务共享注意力
  7. C语言排序函数qsort用法
  8. APMCon 2017|国美云服:混合云架构设计及性能实践
  9. 北大软微计算机专硕分数线,给暑假在复习的考研党谈点经验,一战上岸北大软微总分400+数一148公共课299...
  10. 经典聚类算法——Kmeans详解