Base64 编码原理 && 实现

简介: Base64 编码原理 && 实现

在本章,我们将开启新的篇章去介绍加解密算法。在众多的商用APP中,混杂着多种算法去实现接口的参数的加密,以及各种位置的鉴权操作。即使厂商把一系列算法做了混合的使用,我们也不用去惧怕,接下来的几章中,笔者将会带领大家把这些常用的加解密算法各个击破。

万变不离其宗,不管算法如何去改变,只是形式上的改变,我们掌握其核心,让算法对我们来说不再陌生。更着笔者,让我们一起把算法打下来。

6.1 算法基本介绍

6.1.1 逆向场景中的加解密算法

在安全工程中,主要有如下几个逆向场景:

  • CTF 挑战赛

  • 爬虫

  • 安全防护

这里,我们着重讲解爬虫和安全防护,当前主流业务都是围绕这两个方面展开,它们就好像矛与盾的关系。

在爬虫方面,随着更多爬虫工作者的加入,很多APP的服务器被爬到宕机,以及APP内部的公民个人信息会被不法分子非法抓取。为了对抗这些操作,APP内部的防护也越来越强,最主要的表现形式就是算法的加持。那爬虫工作者想要继续爬取数据,那么破解算法并还原,就成为了必备技能。

在安全防护端:要对抗爬虫和非法入侵的危险,在APP的业务代码开发完成后,就要对APP的核心业务逻辑上加入算法去保护相关的接口。

6.1.2 算法的简单分类

这里,笔者对目前市面上主流的算法做了简单的分类:

  • 常用编码

Base16、Base32、Base64

  • 哈希算法(散列算法)
- MD5

- SHA-1

- SHA-2 (SHA-224、SHA-256、SHA-384、SHA-512)
  • 对称加解密算法
- DES

- 3DES

- AES

接下来,将会对这些算法各个击破,从原理出来,带领大家去把它们用Android中实现一遍。所谓,正向的高度决定着逆向的高度。

6.2 Base 64 基本介绍

6.2.1 Base 64 简介

首先,我们先介绍算法的好伴侣Base64。其中64,表示的就是使用64个常见的可打印字符来表示二进制数据的一个table,它们分别是A-Z、a-z、+、/,表的形式如图6-1所示:https://i0.hdslb.com/bfs/article/799b0c354a25cb3724b86c67ea0c0b4653078170.png@1256w_1052h_!web-article-pic.avif
64对应的及计算方式如下:

2^6 = 64

ascii一个字符,是用8个bit来表示,而Base64就是使用6个bit来表示一个字符。3个字节,即24个bit,对应的就是4个Base64的字符单元,所以它们就是用3个字节来表示4个可打印的字符来表示。

6.2.2 Base 64 使用场景

Base64最早是应用于邮件传输协议中,在邮件传输协议中只支持ascii字符的传输。因此,如果想要传递二进制文件,如图片或者视频数据,显然是不可能实现的。那么想要传递,就要把图片或者视频数据转化成ascii字符进行传输。一直以来,最主流的编码就是ascii编码,为了适用于广泛的的编码规格。

然而,ascii的128~255之间的值是不可见字符。而在网络上做数据交换的时候,中间要经过多个路由器,由于不同的设备,厂商的设定对字符的解码格式也是各不相同,那么这些不可见字符,就有可能被错误的处理。这就很不利于传输。

不可见字符就是一切的关键,在很多算法中,算法对数据进行加密后,那么每个单元中的,就有可能存在不可见的字符,那么我们想要对其进行稳定的传输,就一定要使用Base64。

6.3 Base 64 原理详解

6.3.1 Base 64 编码原理

在前面6.2.1简介中简单的介绍了Base64的简单计算方式,但是,对大家来说不太直观。接下来使用图的方式给大家介绍。

在Base64编码时,每3个字节为一组,共有8bit*3=24bit的数据。那么Base64是使用6bit表示一个字节,那么24/6=4个字符。

相关文章
|
数据采集 运维 数据管理
数据管理能力成熟度模型
为促进大数据产业持续深入发展,提高政府、企事业单位大数据资产管理意识,借鉴国内外成熟度相关理论思想,结合数据生命周期管理各个阶段的特征,对数据管理能力进行了分析、总结,提炼出组织数据管理的八大过程域,并对每项能力进行了二级过程域和发展等级的划分以及相关功能介绍和评定标准的制定。
2076 1
|
5月前
|
Unix Linux Shell
Linux tr命令详细使用教程
tr是Linux中轻量高效的字符处理命令,专注字符翻译、重复压缩与指定删除,纯内存流式处理。本文详解其语法、四大选项(-c/-d/-s/-t)、字符集写法(范围/转义/字符类等)及10+实战场景,助新手快速掌握核心用法。
|
6月前
|
SQL 存储 分布式计算
【赵渝强老师】基于Hudi的大数据湖仓一体架构
Apache Hudi(Hadoop Upserts Delete and Incremental)是开源的流式数据湖平台,支持事务、高效upsert/delete、增量处理、多引擎SQL读写(Spark/Flink/Trino等),自动管理小文件与压缩,兼容云存储,助力构建湖仓一体架构。
970 3
|
Cloud Native Serverless 测试技术
祝贺!我的同事丁宇获“2023 年度云原生产业领军人物”荣誉称号
祝贺!我的同事丁宇获“2023 年度云原生产业领军人物”荣誉称号
1805 131
|
11月前
|
存储 机器学习/深度学习 大数据
终于有人把湖仓一体讲清楚了
湖仓一体是将数据仓库与数据湖融合的新一代数据架构,兼具结构化分析与多样化数据处理能力,实现统一存储、高效查询与深度分析,助力企业提升数据管理效率与业务决策水平。
|
存储 机器学习/深度学习 人工智能
先进级!阿里云大数据+AI平台通过信通院数据平台整体解决方案最高等级评测
近日,在中国信通院组织的第十四批“可信大数据”产品能力评测中,阿里云计算有限公司顺利完成了首个数据平台整体解决方案评测,达到最高等级先进级(3级)。该评测依据 《集成化大数据平台能力分级要求》进行,共涉及10个能力域,44个能力项和577项技术要求。全方位覆盖大数据平台的数据存储、数据集成、数据管理与治理、数据开发、数据处理及分析、数据服务、高可用、平台管理、系统运维、数据安全等能力。
2322 0
先进级!阿里云大数据+AI平台通过信通院数据平台整体解决方案最高等级评测
|
自然语言处理 算法 JavaScript
模糊搜索:在不确定性中寻找精确结果
模糊搜索作为搜索技术的基础部分,凭借其较强的容错性和高效性,广泛应用于各类场景。然而,在需求越来越复杂的今天,模糊搜索的局限性也逐渐显现,尤其在深层语义理解和复杂查询中。因此,模糊搜索在与语义搜索等新型搜索方式结合的过程中展现了更大的潜力。希望本文对你理解模糊搜索的背景、原理及应用有所帮助,助力你在实际项目中灵活运用这一工具。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
模糊搜索:在不确定性中寻找精确结果
|
11月前
|
Go 开发者
Go语言实战案例:使用select监听多个channel
本文为《Go语言100个实战案例 · 网络与并发篇》第5篇,详解Go并发核心工具`select`的使用。通过实际案例讲解如何监听多个Channel、实现多任务处理、超时控制和非阻塞通信,帮助开发者掌握Go并发编程中的多路异步事件处理技巧。
|
负载均衡 安全 网络协议