# 常见算法特征总结

## 算法的类别：

取数据摘要的算法（MD5, SHA\*）

对称加密的算法(AES,DES) （核心算法就是各种复杂的位异或）

非对称加密算法（RSA）(私钥，公钥)

## 数据摘要算法（MD5,SHA\*）

由三个方法组成:1.初始化 2.运算 3.取结果

![](/files/-Lez_AnKduKjIYny6Ed0)

进入第一个块（初始化方法），可以看到各种算法的固定常量：

MD5有四个固定常量。SHA1算法又5个固定常量。SHA256算法有8个固定常量。

常见表现形式如下：

![](/files/-Lez_AnM1FBzS22Al6ZQ)

## RC4算法的特征：

有两个256次循环

## Base64算法特征:

Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。转换的时候，将 3 字节的数据，先后放入一个 24 位的缓冲区中，先来的字节占高位。数据不足 3 字节的话，于缓冲器中剩下的比特用 0 补足。每次取出 6 比特（因为 {\displaystyle 2^{6}=64}），按照其值选择ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/中的字符作为编码后的输出，直到全部输入数据转换完成。

**通常而言 Base64 的识别特征为索引表，当我们能找到 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 这样索引表，再经过简单的分析基本就能判定是 Base64 编码。**

## AES算法特征：

一般AES的密钥长度是128bit 或 256bit，加密出来的数据是128或256的整倍数。

一般情况下密钥都是16字节。

AES的密钥不需要进行初始化，都是直接传明文密钥进来。

方法内有很多复杂的位异或xor。

验证方法:用 hook取得明文传入的密钥，然后经过算法验证是否为AES算法。

如果是CBC算法的，还会拥有一个16字节的IV

## DES算法特征：

密钥长度固定8字节。

密钥需要单独初始化，需要运行一个密钥初始化函数。

会每8字节分段加密。

CBC方式会自带8字节分段加密，ebc方式需要在外面手动分段。

## RSA算法特征：

非对称加密算法

密钥需要单独初始化

密钥长度一般很长，存储格式一般为base64文本

## ECC算法：

密钥需要单独初始化


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://b0ldfrev.gitbook.io/note/miscellaneous/suan-fa-te-zheng-zong-jie.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
