安卓逆向入门笔记(五)——加解密算法与Hook基础

查看 94|回复 9
作者:sigewangdaiduie   
加解密算法与Hook基础
基础算法——base64和hex
“基础不牢,地动山摇。”我们先讲讲算法基础中比较重要的base64和hex,这两种编码不管是哪种算法几乎都需要用到它。
众所周知,在计算机中, 1个字节等于8个二进制位,而base64可以简单理解为就是使用6个二进制位表示1个字节,而六个二进制位的范围为000000~111111,换算成十进制就是0到63,所以 base64 编码会有64个基础字符。base64编码如下图所示:


14542616644295.jpg (82.82 KB, 下载次数: 0)
下载附件
2024-10-10 14:10 上传

base64编码是使用6个二进制位表示一字节的,所以上图中的字符就是6个二进制位转换成的10进制对应base64编码所得到的字符。
现在我们对base64稍稍有了点了解,那base64是如何编码和解码的呢?先说结论,编码后源数据会以三个字节为一组转化为4个字符表示,如果源数据字节数量不为三的倍数,那解决这个问题需要补充字节,补充到其二进制位可以整除6的时候。
原因或许有些观察敏锐的同学已经发现了,产生如此情况的原因就是两者之间一个字节所表示的二进制位。一个8个二进制位才表示1字节,一个6个二进制位就表示1字节,假设有三个字符'abc',总共表示3*8=24个二进制位,编码过后,每6个二进制位表示1个字节,24/6=4,可以看到源数据以三个字节为一组转化为4个字符表示,这与结论相符。光说理论也不行,我们来模拟一下编码的过程:
[table]
[tr]
[td]字符[/td]
[td]二进制位[/td]
[/tr]
[tr]
[td]a

字节, 算法

0jiao0   

写得好详细,支持一下
diaoyutai7890   

谢谢大佬的整理
EricBridy   

谢谢,分享
killjd   

这是写论文么,太长了吧,看起来费力!先收藏慢慢学习
debug_cat   

好详细,值得点赞学习
Orima   

好详细,支持一下!
hheeoo   

谢谢大佬的分享
wapj1688   

编码会有64个基础字符
yunteng9527   

收藏学习了
您需要登录后才可以回帖 登录 | 立即注册

返回顶部