Day2 十分钟带你解决逆向中对称加密算法 (RC4)
流加密算法
原理
1 | 流加密算法(Stream Cipher),是一种加密方式,它通过将明文与一个随机生成的密钥流进行逐位或逐字节异或操作来产生密文。 |
基本操作
1 | 密钥流生成器(Key Stream Generator):流加密算法的核心是密钥流生成器,它使用一个短的密钥(种子密钥) |
RC4 算法介绍
原理
1 | 在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种串流加密算法,密钥长度可变。他加密解密使用 |
基本操作
1 | 1、初始化S-Box |
RC4 算法刨析
第一步:初始化 S-Box
具体过程如下图所示,其实就是从 0~255 填充满大小为 256 的数组。
第二步:KSA 过程
初始化密钥
上面我们有了最初的 S-Box,那么对于 KSA 的核心作用呢,实际上是通过密钥来置乱初始的向量,这个初始向量是一个固定值,从 0~255 来填充满 S-Box。
1 | 这一步呢其实在编码过程当中是可有可无的,如果我们不生成T-Box,可以在编码过程当中模KeyLen来实现,如果使用T-Box,那么我们在编码过程当中需要模256了,这里展示使用T-Box的情况,和文章最开头的流程图保持一致。对于T-Box来说,其实就是密钥循环复制m次,使得循环之后充满256长度的数组,从这里可以直观的看出,对于RC4来说,它的密钥长度大小最大是256。 |

置乱过程(KSA)

KSA 整体流程图

第三步:PRGA 过程
这个过程是整个 RC4 算法的核心,通过这个过程生成我们需要的 PRNG 序列,具体过程如下图所示。
PRGA 整体流程图

解决逆向中对称加密算法的小技巧
使用工具:
1 | LazyIDA:具体可以看我的bilibili上的视频教程,提供插件下载。 |
具体思路
1 | 首先我们知道流加密算法的加密和解密过程是相同的,我们输入的明文会被加密为密文,那么如果我们输入 |
bilibili 视频教程
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Bbdolt's Blog!