MomenAbuAssi/CryptoForge
GitHub: MomenAbuAssi/CryptoForge
一款集成古典密码、现代加密、数论计算、哈希分析与密码分析工具的 Python 桌面密码学套件。
Stars: 0 | Forks: 0
# CryptoForge v1.0
### 专业密码学与密码分析套件
### 专业密码学与密码分析套件
## 📋 目录
1. [运行要求](#-متطلبات-التشغيل)
2. [运行应用程序](#-تشغيل-التطبيق)
3. [⇄ 转换器 — Converter](#-المحوّل--converter)
4. [🔒 经典密码 — Classic Ciphers](#-الشفرات-الكلاسيكية--classic-ciphers)
5. [🔢 数论 — Number Theory](#-نظرية-الأعداد--number-theory)
6. [🔑 哈希与验证 — Hash & HMAC](#-الهاش-والتحقق--hash--hmac)
7. [🔓 哈希破解 — Hash Cracker](#-كسر-الهاش--hash-cracker)
8. [🔐 现代加密 — AES / RSA](#-التشفير-الحديث--aes--rsa)
9. [📡 编码 — Encodings](#-الترميزات--encodings)
10. [📊 频率分析 — Frequency Analysis](#-تحليل-التردد--frequency-analysis)
11. [🔠 文本工具 — Text Tools](#-أدوات-النص--text-tools)
12. [🔍 智能分析器 — Analyzer](#-المحلل-الذكي--analyzer)
13. [📜 历史 — History](#-السجل--history)
14. [👤 关于开发者 — About](#-حول-المطوّر--about)
15. [⌨️ 键盘快捷键](#️-اختصارات-لوحة-المفاتيح)
16. [💡 专业提示](#-نصائح-احترافية)
## 🖥 运行要求
| 组件 | 版本 |
|---|---|
| Python | 3.10 或更高版本 |
| `cryptography` 库 | 41.0.0 或更高版本 |
| 操作系统 | Windows 10/11(支持 Linux 和 macOS) |
安装所需库:
```
pip install cryptography
```
## ▶ 运行应用程序
```
cd CryptoForge
python gui_converter.py
```
## ⇄ 转换器 — Converter
**目的:** 在一步操作中将数据在多种格式之间进行转换。
### 支持的格式
- **Text** — 普通 UTF-8 文本
- **Binary** — `01001000 01100101` 格式的二进制
- **Hex** — `48 65 6C` 格式的十六进制
- **Decimal** — 十进制字节列表 `72, 101, 108`
- **Base64** — `SGVsbG8=` 格式的 Base64 编码
- **Base32 / Base58 / Octal** — 附加编码
### 步骤
1. 在 **Input** 字段中输入或粘贴文本
2. 从下拉菜单中选择输入类型(或保留为 **auto** 进行自动检测)
3. 点击 **▶ Convert**
4. 结果将以所有格式一次性显示
### 实战示例
**输入:** `Hello`
**类型:** auto(将自动检测为:text)
| 格式 | 结果 |
|---|---|
| Text (UTF-8) | `Hello` |
| Binary | `01001000 01100101 01101100 01101100 01101111` |
| Hexadecimal | `48 65 6C 6C 6F` |
| Decimal | `72, 101, 108, 108, 111` |
| Base64 | `SGVsbG8=` |
| Base32 | `JBSWY3DPEB3W64TMMQ======` |
| Base58 | `9Ajdvzr` |
| Octal | `110 145 154 154 157` |
### 附加按钮
- **Paste** — 从剪贴板粘贴
- **Clear** — 清除所有字段
- **Open File** — 打开文本或二进制文件(自动将非文本文件转换为 hex)
- **Save Results** — 将所有转换结果保存到 `.txt` 文件中
## 🔒 经典密码 — Classic Ciphers
**目的:** 使用 13 种经典算法对文本进行加密和解密,并显示每种算法的数学公式。
### 选项卡界面
- **左侧:** 输入和输出字段(可扩展)
- **右侧:** 可滚动的算法列表
- 每种算法均以霓虹绿色显示其 **∑ 数学公式**
- **⎘ Copy Output** 按钮可直接复制结果
### 1. 凯撒密码 — Caesar Cipher
**公式:**
```
تشفير: C = (P + k) mod 26
فك: P = (C - k) mod 26
```
**步骤:**
1. 在左侧的 **Input** 字段中输入文本
2. 设置偏移量 **Shift** (1–25)
3. 点击 **Encrypt** 进行加密,或点击 **Decrypt** 进行解密
4. 点击 **Brute-force** 尝试所有偏移量并显示前 5 个结果
**示例:**
```
Input: HELLO
Shift: 3
Encrypt: KHOOR
Decrypt: EBIIL
```
**Brute-force 在以下情况非常有用:**
- 当您发现一段密文但不知道偏移量的值时
- 应用程序会根据英文字母频率自动对结果进行排序
### 2. 维吉尼亚密码 — Vigenère Cipher
**公式:**
```
Cᵢ = (Pᵢ + Kᵢ) mod 26
Pᵢ = (Cᵢ − Kᵢ) mod 26
```
**步骤:**
1. 在 **Input** 中输入文本
2. 在 **Key** 字段中输入密钥(英文单词)
3. 点击 **Encrypt** 或 **Decrypt**
**示例:**
```
Input: HELLO
Key: KEY
Encrypt: RIJVS
Decrypt: (أدخل RIJVS وضع Key=KEY) → HELLO
```
### 3. 仿射密码 — Affine Cipher
**公式:**
```
تشفير: C = (a·P + b) mod 26
فك: P = a⁻¹·(C − b) mod 26
```
**步骤:**
1. 在 **Input** 中输入文本
2. 设置 **a** 的值 — 必须满足 gcd(a,26)=1
- 有效值:1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25
3. 设置 **b** 的值 (0–25)
4. 点击 **Encrypt** 或 **Decrypt**
**示例:**
```
Input: HELLO
a=5, b=8
Encrypt: RCLLA
```
### 4. 埃特巴什码 / ROT-13 / ROT-47
**无需密钥 — 直接点击按钮:**
| 算法 | 公式 | 示例 |
|---|---|---|
| **Atbash** | `C = 25 − P` (A↔Z) | `HELLO → SVOOL` |
| **ROT-13** | `C = (P + 13) mod 26` | `HELLO → URYYB` |
| **ROT-47** | `C = 33 + ((ord(P)−33+47) mod 94)` | `Hello! → w6==@?` |
### 5. 博福特密码 — Beaufort Cipher
**公式:**
```
C = (K − P) mod 26
عملية التشفير = عملية فك التشفير (متعاكسة)
```
**示例:**
```
Input: HELLO
Key: BEAUFORT
→ UUOOJ
```
### 6. XOR 密码
**公式:**
```
تشفير: C = P ⊕ K
فك: P = C ⊕ K (نفس العملية — XOR معكوس نفسه!)
```
**步骤:**
1. 在 **Input** 中输入文本
2. 在 **Key** 中输入密钥
3. 点击 **Encrypt → Hex** 对文本进行加密并以 hex 格式输出
4. 将输出的 hex 粘贴到 **Input** 中并点击 **Decrypt ← Hex** 恢复文本
**示例:**
```
Input: Hello
Key: mykey
Encrypt: 250C191E12
Decrypt: (أدخل 250C191E12) → Hello
```
### 7. 栅栏密码 — Rail Fence Cipher
**思路:** 沿着 N 条轨道以 Z 字形模式写入文本,然后按行读取
**3 条轨道的示例:**
```
Input: HELLOWORLD
Rails: 3
H . . . O . . . D
. E . L . W . L .
. . L . . . R . .
Encrypt: HODELWLLR
```
**步骤:**
1. 输入文本
2. 设置轨道数 **Rails** (2–10)
3. 点击 **Encrypt** 或 **Decrypt**
### 8. 列置换密码 — Columnar Transposition
**思路:** 根据密钥的字母顺序重新排列列
**示例:**
```
Input: HELLOWORLD
Key: ZEBRA
Encrypt: LORELDHWLO (ترتيب أعمدة: A,B,E,R,Z)
```
### 9. 替换密码 — Substitution Cipher
**思路:** 用从密钥派生出的加密字母表替换原始字母表
**公式:** `C = σ(P) 其中 σ 是字母表的新排列`
**示例:**
```
Input: HELLO
Key phrase: KEYWORD
الأبجدية الجديدة: K E Y W O R D A B C F G H I J L M N P Q S T U V X Z
Encrypt: بناءً على جدول الاستبدال
```
### 10. 波利比奥斯方阵 / Playfair 密码 — Playfair Cipher
**思路:** 从密钥派生出的 5×5 矩阵,对字母对进行加密
```
نفس الصف → تحرّك يميناً
نفس العمود → تحرّك للأسفل
مستطيل → تبادل الأعمدة
```
**步骤:**
1. 输入文本(仅限英文字母,自动将 J 当作 I 处理)
2. 输入密钥
3. 点击 **Encrypt (Playfair)**
**注意事项:**
- J 被视为 I
- 如果字母对中的两个字母相同,则在它们之间插入 X
- 如果长度为奇数,则在末尾添加 X
### 11. 摩斯密码 — Morse Code
**示例:**
```
Text → Morse: SOS → · · · − − − · · ·
Morse → Text: · · · − − − · · · → SOS
```
### 12. 培根密码 — Bacon Cipher
**思路:** 将每个字母编码为由 A 和 B 组成的字符串(5 位)
`A=AAAAA B=AAAAB … Z=BABAB`
**示例:**
```
Encode: HI → AABBB AABAA
Decode: AABBB AABAA → HI
```
### 13. 北约音标字母 — NATO Phonetic Alphabet
```
Input: SOS
Output: Sierra Oscar Sierra
```
## 🔢 数论 — Number Theory
**目的:** 解决基础数学问题,以理解 RSA 和现代加密算法。
### 1. 最大公约数(欧几里得算法 Euclidean Algorithm)
**步骤:**
1. 输入值 **a** 和 **b**
2. 点击 **Compute GCD**
**示例:**
```
a = 48, b = 18
gcd(48, 18)
48 = 2×18 + 12
18 = 1×12 + 6
12 = 2×6 + 0
gcd = 6
```
### 2. 模反元素(扩展欧几里得算法 Extended Euclidean)
**目的:** 求 `a⁻¹ mod m` — 对于 RSA 和仿射密码的解密至关重要
**示例:**
```
a = 3, m = 26
→ 3·9 ≡ 1 (mod 26)
→ المعكوس = 9
```
### 3. 欧拉函数 — Euler's φ(n)
**目的:** 计算小于 n 且与 n 互质的正整数的个数 — 这是 RSA 的基础
**示例:**
```
n = 60
φ(60):
Factor 2: φ = φ × (1 − 1/2)
Factor 3: φ = φ × (1 − 1/3)
Factor 5: φ = φ × (1 − 1/5)
φ(60) = 16
```
### 4. 素性测试 — Miller-Rabin
**步骤:**
1. 在 **n** 字段中输入数字
2. 点击 **Test Primality**
**示例:**
```
104729 → PRIME ✓ (Miller-Rabin, 10 witnesses)
100 → NOT prime (composite)
```
### 5. 质因数分解 — Prime Factorization
**示例:**
```
n = 360
360 = 2^3 × 3^2 × 5
```
### 6. Diffie-Hellman 密钥交换演示
**思路:** 通过不安全的公共通道交换共享的密钥
**步骤:**
1. 输入素数 **p** 和生成元 **g**
2. 输入 Alice 的私钥 **a** 和 Bob 的私钥 **b**
3. 点击 **Run Demo**
**示例:**
```
p=23, g=5, a=6, b=15
Alice → A = 5⁶ mod 23 = 8
Bob → B = 5¹⁵ mod 23 = 19
Alice → K = 19⁶ mod 23 = 2
Bob → K = 8¹⁵ mod 23 = 2 ✓ المفتاح المشترك = 2
```
## 🔑 哈希与验证 — Hash & HMAC
**目的:** 为文本和文件生成单向数字指纹。
### 可用算法
| 算法 | 输出长度 | 用途 |
|---|---|---|
| MD5 | 32 字符 | 文件完整性校验(用于加密不安全) |
| SHA-1 | 40 字符 | 已过时,不推荐用于安全领域 |
| SHA-224 | 56 字符 | — |
| SHA-256 | 64 字符 | 现代安全领域最常用的算法 |
| SHA-384 | 96 字符 | — |
| SHA-512 | 128 字符 | SHA-2 家族中安全性更高的选择 |
| SHA3-256 | 64 字符 | SHA 的第三代 |
| SHA3-512 | 128 字符 | 具有一定的抗量子攻击能力 |
| BLAKE2b | 128 字符 | 安全性相似但比 SHA-512 更快 |
| BLAKE2s | 64 字符 | 针对 32 位系统优化 |
### 步骤
**普通哈希:**
1. 在 **Input Text** 字段中输入文本
2. 点击 **Hash All** 一次性生成所有哈希
**HMAC(带密钥的消息认证码):**
1. 在 **Input Text** 中输入文本
2. 在 **HMAC Key** 中输入密钥
3. 点击 **HMAC-SHA256** 或 **HMAC-SHA512**
**PBKDF2(密码加密):**
1. 在 **Input Text** 中输入密码
2. 在 **HMAC Key** 中输入 salt(或留空以自动生成)
3. 点击 **PBKDF2**
### 实战示例
```
Input: password123
MD5: 482c811da5d5b4bc6d497ffa98491e38
SHA-256: ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f
BLAKE2b: (128 حرف)
HMAC Key: secretkey
HMAC-SHA256: a0d2b35c...
PBKDF2:
Salt: a3f8c1... (توليد تلقائي)
Hash: d4e5f6...
```
## 🔓 哈希破解 — Hash Cracker
**目的:** 通过 wordlist 对未知来源的哈希进行字典攻击以破解 — 支持 MD5、SHA-1、SHA-224/256/384/512、SHA3-256/512、BLAKE2b/s。
### 工作机制
Hash Cracker 采用字典攻击(**Dictionary Attack**)方式,具体步骤如下:
1. **确定目标:** 将哈希粘贴到 Target Hash 字段中
2. **自动检测类型:** 根据十六进制字符串的长度确定哈希类型
| 长度 | 可能的类型 |
|---|---|
| 32 | MD5 |
| 40 | SHA-1 |
| 56 | SHA-224 / SHA3-224 |
| 64 | SHA-256 / SHA3-256 / BLAKE2s |
| 96 | SHA-384 / SHA3-384 |
| 128 | SHA-512 SHA3-512 / BLAKE2b |
3. **准备 Wordlist:** 加载单词列表或生成列表
4. **运行破解:** 尝试每个单词并计算其哈希值,然后将其与目标进行比较
### Multi-Mode(多重模式)
启用 **Multi-mode** 选项时:
- 将同时尝试所有长度与输入哈希相匹配的哈希算法
- 在不知道哈希的确切类型时非常有用(例如,64 个字符可能是 SHA-256、SHA3-256 或 BLAKE2s)
禁用 Multi-mode 时:
- 仅尝试一种算法(在检测到的列表中的第一个算法)
### Wordlist — 单词列表
**选项 1 — 加载外部 wordlist:**
1. 点击 **📂 Load Wordlist**
2. 选择任何每行包含一个单词的 `.txt` 文件
3. 应用程序会立即显示已加载的单词数
```
✔ 45,000 words loaded from rockyou.txt
```
**选项 2 — 生成自定义 wordlist(约 5000+ 个单词):**
点击 **⚙ Generate Custom Wordlist**,应用程序将生成一个包含以下内容的列表:
- 常见的阿拉伯和巴勒斯坦名字(名字 + 姓氏)
- 全球常用的密码(`password`, `123456`, `admin`, …)
- 巴勒斯坦城市名称(`alquds`, `gaza`, `ramallah`, `nablus`, …)
- 常见宗教词汇(`allah`, `bismillah`, `quran`, …)
- 出生年份(1975–2010)
- 不同格式的日期(DD/MM/YYYY, MMYYYY, …)
- 组合:名字 + 年份,名字 + 数字,名字 + 姓氏
**生成单词的示例:**
```
mohammed
mohammed1990
Mohammed123
abuassi
abuassi2000
ahmed.barakat
01011995
1995-01
palestine
falastin
alquds123
```
### 控制按钮
| 按钮 | 功能 |
|---|---|
| **▶ Crack** | 在后台线程中开始破解(不会冻结界面) |
| **■ Stop** | 立即停止破解 |
| **🗑 Clear All** | 清除哈希、结果和进度 |
### 进度条与统计信息
在运行期间,应用程序会实时显示:
- **Tried:** 已尝试单词数 / 总数 `示例:Tried: 12,450 / 45,000`
- **Speed:** 速度(单词/秒) `示例:Speed: 58,200 w/s`
- **Elapsed:** 已用时间 `示例:Elapsed: 3s`
### 结果模板
**找到单词时:**
```
✅ MATCH FOUND!
──────────────────────────────────────────────────
Plaintext : password123
Hash type : SHA-256
Hash : ef92b778bafe771e89245b89ecbc08a44a4e166c...
Words tried: 3,210 / 45,000
Time : 0.05s
Speed : 64,200 w/s
```
**失败时:**
```
❌ Not found in wordlist.
──────────────────────────────────────────────────
Tried: 45,000 words
Time : 0.77s
Tip: try a larger wordlist or generate a custom one.
```
**停止时:**
```
⏹ Cracking stopped.
Tried: 8,200 words before stop.
Elapsed: 0.1s
```
### 完整实战示例
```
الهدف: كسر الهاش 482c811da5d5b4bc6d497ffa98491e38
1. الصق الهاش → يكتشف تلقائياً: "✔ Length 32 → MD5"
2. اضغط Generate Custom Wordlist واحفظ الملف
3. فعّل Multi-mode (مُفعَّل افتراضياً)
4. اضغط ▶ Crack
النتيجة:
✅ MATCH FOUND!
Plaintext : password123
Hash type : MD5
Words tried: 47 / 5,234
Time : 0.00s
```
## 🔐 现代加密 — AES / RSA
### Fernet — 对称加密
**简介:** 在一个安全的库中结合了 AES-128-CBC + HMAC-SHA256 加密
**公式:**
```
Token = HMAC-SHA256(key) + AES-128-CBC(key, IV, plaintext)
يشمل timestamp للانتهاء الصلاحية
```
**步骤:**
1. 点击 **Generate Key** 生成随机密钥
2. 将密钥保存在安全的地方
3. 在 **Input / Plaintext** 中输入文本
4. 点击 **Encrypt** 进行加密
5. 解密:将密文粘贴到 **Input** 中,使用相同的密钥并点击 **Decrypt**
**示例:**
```
Key: [اضغط Generate Key]
Input: Hello, World!
Encrypt: gAAAAABl... (نص Base64 طويل)
Decrypt: Hello, World!
```
### AES-256-GCM — 认证加密
**简介:** 采用 GCM 模式的美国政府加密标准(带有完整性验证)
**公式:**
```
C, T = AES_GCM_Encrypt(K, N, P)
K = SHA-256(Passphrase) [256 بت]
N = نونس عشوائي 96 بت
T = وسم مصادقة 128 بت
```
**加密步骤:**
1. 在 **Passphrase** 中输入密码短语
2. 在 **Input / Plaintext** 中输入文本
3. 点击 **Encrypt (GCM)**
4. 输出的 JSON 包含:`ciphertext`, `tag`, `nonce`, `key_sha256`
**解密步骤:**
1. 将完整的输出 JSON 粘贴到 **Input / Plaintext** 中
2. 输入相同的 **Passphrase**
3. 点击 **Decrypt ← paste JSON**
**示例:**
```
{
"ciphertext": "ABC123...",
"tag": "XYZ789...",
"nonce": "a1b2c3...",
"key_sha256": "ef92b7..."
}
```
### RSA — 非对称加密
**公式:**
```
Key gen: n=p·q, φ(n)=(p−1)(q−1), e·d≡1 mod φ(n)
Encrypt: C = Mᵉ mod n
Decrypt: M = Cᵈ mod n
```
**思路:** 包含两个密钥 — 公钥用于加密,私钥用于解密
**步骤 1 — 生成密钥:**
1. 选择密钥大小(1024 / 2048 / 4096 位)
2. 点击 **1. Generate Keys**
3. 公钥和私钥将显示在 **Output** 字段中
4. 请务必将私钥保存在安全的地方!
**步骤 2 — 加密:**
1. 在 **Input / Plaintext** 中输入信息
2. 点击 **2. Encrypt**(自动使用公钥)
**步骤 3 — 解密:**
1. 将密文 粘贴到 **Input / Plaintext** 中
2. 点击 **3. Decrypt**(自动使用私钥)
## 📡 编码 — Encodings
**目的:** 在不同的编码之间转换文本(这不是加密 — 始终可以反转)。
### 可用类别
#### URL 编码
```
Input: Hello World! https://example.com
Encode: Hello%20World%21%20https%3A%2F%2Fexample.com
Decode: Hello World! https://example.com
```
#### HTML / Entities
```
Input:
Encode: <script>alert('XSS')</script>
→ Entities: <script>
```
#### Unicode / ASCII
```
Input: مرحبا
→ Unicode Esc: مرحبا
→ ASCII Codes: 1605 1585 1581 1576 1575
```
#### Octal / Hex String
```
Input: Hello
→ Octal: 110 145 154 154 157
→ \x Hex: \x48\x65\x6c\x6c\x6f
```
#### Base 编码
```
Input: Hello
Base64: SGVsbG8=
Base32: JBSWY3DPEB3W64TMMQ======
Base58: 9Ajdvzr
```
#### 压缩 → Base64
```
Input: نص طويل متكرر جداً...
Compress → Base64: eJy... (أقصر بشكل ملحوظ للنصوص المتكررة)
Decompress ← Base64: النص الأصلي
```
### 通用步骤
1. 在 **Input** 中输入文本
2. 点击类别中的任意按钮
3. 结果将显示在 **Output** 中
4. 点击 **⎘ Copy Output** 进行复制
## 📊 频率分析 — Frequency Analysis
**目的:** 使用统计方法分析和破解经典密码 — 这是 CTF 的基本工具。
### 可用工具
#### ▶ Full Analysis — 全面分析
**输出内容:**
- 文本统计信息(字符数、单词数、行数)
- 重合指数
- 带有文本图表的字母频率表
- 与标准英文字母频率的比较
- 用于查找 Vigenère 密钥长度的 Kasiski 测试
**示例:**
```
Input: KHOOR ZRUOG (نص مشفر بقيصر shift=3)
─── Frequency Analysis ───────────────────────────────────────
Let Count % Bar EN%
──────────────────────────────────────────────────────────────
O 3 13.6% ███████████████████████████ 7.5%
R 2 9.1% ██████████████████ 6.0%
K 1 4.5% █████████ 0.8%
...
Index of Coincidence: 0.075000 ≈ English (~0.065)
```
#### Letter Frequency — 仅字母频率
显示字母按频率从高到低排序的表格。
**如何使用它来破解替换密码:**
1. 粘贴密文
2. 点击 **Letter Frequency**
3. 将文本中最常见的字母与英语进行比较:`E T A O I N S H R D`
4. 如果 `X` 出现频率最高 → 很可能 `X = E`
#### Index of Coincidence — 重合指数
**解释:**
| 值 | 解释 |
|---|---|
| ≈ 0.065 | 英文文本或单表替换密码(Caesar、Substitution) |
| ≈ 0.038 | 随机文本或多表替换密码 |
| 0.045–0.055 | 密钥较短的 Vigenère |
**附加参考:**
- 德语:~0.0762
- 法语:~0.0778
#### Kasiski Examination — Kasiski 测试
**目的:** 确定 Vigenère 密钥的长度
**工作原理:**
- 在文本中搜索重复的 3 个及以上字符的片段
- 计算它们之间的距离
- 找到最大公约数 (GCD) → 这可能是密钥的长度
**示例:**
```
نص مشفر بـ Vigenère بمفتاح "KEY" (طول 3)
المقطع 'XYZ' يظهر عند المواضع: 0, 12, 24
المسافات: 12, 12
GCD: 12 → طول المفتاح المحتمل: 12 أو 6 أو 4 أو 3
```
#### Vigenère BF — 暴力破解 Vigenère(结合 Kasiski)
这是应用程序中用于破解 Vigenère 密码的最强工具。它结合了 **Kasiski 测试**、**Chi-squared** 和**穷举搜索**。
**详细工作机制:**
**阶段 1 — Kasiski 测试:**
- 搜索重复的连字
- 计算它们间距的 GCD
- 提取可能的密钥长度(2–20 范围内 GCD 的因数)
**阶段 2a — 针对小长度(≤ 4 且在 Kasiski 结果中)的穷举 搜索:**
- 尝试所有可能的密钥 `26^n`(例如,26^3 = 17,576 个密钥)
- 在全文中使用 Chi-squared 评估每个密钥
- 结果:对这些长度提供尽可能准确的评估
**阶段 2b — 针对长度 2–20 的聚合 Chi-squared 分析:**
- 根据密钥长度将文本分为多组
- 为每组找到最佳偏移量
- 组合偏移量以生成建议的密钥
**评分系统:**
```
Score = χ²/n + 0.05 × keylen − 0.30 × [Kasiski bonus]
```
Score 值越小,结果的可能性越大。
**结果示例:**
```
╔══════════════════════════════════════════════════════════════╗
║ CryptoForge — Vigenère Brute-force (Kasiski + χ²) ║
╚══════════════════════════════════════════════════════════════╝
Input letters : 150
Key lengths : 2 – 20
─── Kasiski Examination ────────────────────────────────────────
GCD of trigram spacings : 6
Probable key length(s) : 2, 3, 6
→ Lengths 2, 3 use exhaustive search (26^n).
→ All Kasiski lengths receive a scoring bonus (−0.30).
─── Exhaustive Search — Key Length 3 (17,576 combinations) ───
Rank Key χ²/n Avg IC Decrypted preview
──────────────────────────────────────────────────────────────────────────────────
1 KEY 0.8421 0.0651 HELLO WORLD THIS IS A TEST MESSAGE...
─── Ranked Results (all lengths) ───────────────────────────────
Rank Method Len Key Score Avg IC Decrypted preview
score = χ²/n + 0.05·len − 0.30·[Kasiski]
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 [★ Exh. + Kasiski ] 3 KEY 0.6921 0.0651 HELLO WORLD THIS IS A TEST MESSAGE...
2 [★ Kasiski / Grp. ] 6 KEYKEE 0.9134 0.0612 HELLO WORLD...
─── Best Guess ─────────────────────────────────────────────────
Key : "KEY"
Length : 3
Method : Exhaustive + Kasiski ★
Score : 0.6921 Avg IC : 0.0651
Full decryption:
──────────────────────────────────────────────────────────────────────
HELLO WORLD THIS IS A TEST MESSAGE TO DEMONSTRATE VIGENERE...
```
## 🔠 文本工具 — Text Tools
**目的:** 以多种方式处理和分析文本。
### 可用工具(23 种)
| 工具 | 描述 | 示例 |
|---|---|---|
| **Reverse** | 反转文本 | `Hello → olleH` |
| **UPPERCASE** | 转为大写字母 | `hello → HELLO` |
| **lowercase** | 转为小写字母 | `HELLO → hello` |
| **Title Case** | 每个单词首字母大写 | `hello world → Hello World` |
| **Strip Whitespace** | 删除两端的空格 | ` hi → hi` |
| **Remove Spaces** | 删除所有空格 | `h e l l o → hello` |
| **Remove Newlines** | 将换行符替换为空格 | — |
| **Sort Lines A→Z** | 按字母顺序对行排序 | — |
| **Sort Lines Z→A** | 反向排序 | — |
| **Deduplicate Lines** | 删除重复行 | — |
| **Remove Empty Lines** | 删除空行 | — |
| **Unique Chars** | 每个字符只保留一次 | `HELLO → HELO` |
| **Word Count** | 统计单词、字母和数字 | — |
| **Char Frequency** | 每个字符的频率(前 30 名) | — |
| **Palindrome?** | 文本是否为回文? | `racecar → ✓ YES` |
| **Extract Emails** | 提取电子邮件 | — |
| **Extract URLs** | 提取链接 | — |
| **Extract IPs** | 提取 IP 地址 | — |
| **Extract Hashes** | 检测 MD5/SHA-1/SHA-256/SHA-512 哈希 | — |
| **Password Strength** | 测量密码强度(7 项标准) | — |
| **Generate Password** | 生成强密码(24 个字符) | — |
| **Text Entropy** | 计算文本熵 | — |
| **Caesar Analysis** | 暴力破解并分析 Caesar(前 5 名) | — |
### 示例 — 测量密码强度
```
Input: MyP@ssw0rd!
Strength: Strong (6/7)
✓ At least 8 chars
✓ At least 12 chars
✓ Has uppercase
✓ Has lowercase
✓ Has digit
✓ Has symbol
✗ No repeating chars
```
### 示例 — Word Count
```
Input: Hello World! 123
Characters 17
Characters (no spaces) 14
Words 3
Lines 1
Sentences 1
Digits 3
Letters 10
Uppercase 2
Lowercase 8
```
## 🔍 智能分析器 — Analyzer
**目的:** 自动分析任何输入并提供全面的报告。
### 可用按钮
| 按钮 | 功能 |
|---|---|
| **🔍 Analyze Everything** | 包含所有分析的完整报告 |
| **Detect Encoding** | 仅检测编码类型(hex?base64?binary?) |
| **Caesar Brute-force** | 破解 Caesar 并显示前 5 个偏移量 |
### Analyze Everything 会分析什么
- **格式检测:** hex、base64、binary、decimal、纯文本
- **文本统计信息:** 字符、单词、行、句子、数字、字母
- **熵:** 数据的随机性程度
- **重合指数 (IC)**
- **哈希检测:** MD5、SHA-1、SHA-256、SHA-512
- **模式提取:** 电子邮件、链接、IP 地址
- **密码强度**(如果文本长度在 6 到 128 个字符之间且为单行)
- **字母频率**(前 10 名)
### 示例
```
Input: 5d41402abc4b2a76b9719d911017c592
╔══════════════════════════════════════════════╗
║ CryptoForge — Complete Analyzer ║
╚══════════════════════════════════════════════╝
─── Format Detection ──────────────────────────────
Type: hex
Confidence: 95%
Note: Valid hexadecimal
─── Text Statistics ────────────────────────────────
Characters 32
Letters 21
Digits 11
Entropy (bits/char) 3.8142
Index of Coincidence 0.041935
─── Hash Detection ──────────────────────────────────
MD5 (32): 5d41402abc4b2a76b9719d911017c592
(هذا في الواقع MD5 لكلمة "hello")
```
## 📜 历史 — History
**目的:** 跟踪当前会话期间执行的所有操作。
### 自动记录的内容
- 每一项加密或解密操作
- 每一项转换、哈希或编码操作
- 时间、操作、输入和输出(前 80 个字符)
- 保留最近的 200 次操作
### 按钮
| 按钮 | 功能 |
|---|---|
| **Refresh** | 刷新历史记录显示 |
| **Export…** | 将历史记录保存到 `.txt` 文件 |
| **Clear** | 清除历史记录 |
### 历史记录条目示例
```
[14:32:11] Caesar Enc (k=3)
IN: HELLO WORLD
OUT: KHOOR ZRUOG
────────────────────────────────────────────────────────────
[14:33:45] SHA-256
IN: password123
OUT: ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f38
────────────────────────────────────────────────────────────
[14:35:02] Vigenère Enc
IN: HELLO
OUT: RIJVS
────────────────────────────────────────────────────────────
```
## 👤 关于开发者 — About
**开发者:** Momen Abu Assi
**领域:** 计算机工程师
**专长:** 信息安全,嵌入式系统开发
**教育背景:** 嵌入式系统 / 机器人学 / 控制系统
**邮箱:** momenabuassi10@gmail.com
## ⌨️ 键盘快捷键
| 快捷键 | 功能 |
|---|---|
| `Ctrl + Enter` | Converter 选项卡中执行转换 |
| `F5` | 在 Converter 选项卡中执行转换 |
| `Ctrl + L` | 清除 Converter 选项卡 |
| `Ctrl + H` | 转到 History 选项卡 |
| `Ctrl + F` | 转到 Frequency Analysis 选项卡 |
| `Ctrl + A` | 在任何文本字段中全选文本 |
| `↑ ↓ PgUp PgDn` | 在可滚动的面板中滚动 |
## 💡 专业提示
### 逐步破解未知密码
```
1. الصق النص في تبويب Analyzer
2. اضغط Analyze Everything
3. انظر قيمة IC:
- IC ≈ 0.065 → جرّب Caesar Brute-force في Analyzer أو Frequency Analysis
- IC ≈ 0.038 → على الأرجح Vigenère → اضغط Vigenère BF في Frequency Analysis
- IC متوسط → Vigenère بمفتاح قصير
4. انتقل لتبويب Frequency Analysis للتحليل التفصيلي
5. جرّب فك التشفير في Classic Ciphers
```
### 破解未知哈希
```
1. اذهب لتبويب Hash Cracker
2. الصق الهاش — سيكتشف التطبيق نوعه تلقائياً
3. فعّل Multi-mode للتجربة على جميع الأنواع المحتملة
4. اضغط Generate Custom Wordlist لتوليد قاموس مُخصَّص
أو حمّل rockyou.txt أو أي wordlist خارجي
5. اضغط ▶ Crack وانتظر النتيجة
```
### 正确使用 RSA
```
1. اذهب لتبويب AES/RSA
2. اختر حجم المفتاح (2048 بت موصى به)
3. اضغط Generate Keys وانسخ المفاتيح في ملف آمن
4. أرسل المفتاح العام للطرف الآخر
5. الطرف الآخر يُشفّر بالمفتاح العام
6. أنت تفكّ التشفير بمفتاحك الخاص
```
### 安全地存储密码
```
1. اذهب لتبويب Hash & HMAC
2. أدخل كلمة المرور
3. أدخل salt عشوائي في HMAC Key (أو اتركه فارغاً)
4. اضغط PBKDF2
5. احفظ: Salt + Hash (لا تحفظ كلمة المرور أبداً!)
```
### 高效使用 Vigenère BF
```
1. النص يجب أن يكون ≥ 6 حروف إنجليزية
2. للحصول على نتائج Kasiski → النص يجب أن يكون ≥ 20 حرفاً
3. كلما طال النص كانت النتائج أدق
4. انظر العمود "Method" في النتائج:
[★ Exh. + Kasiski] = أعلى ثقة (بحث شامل + كاسيسكي)
[★ Kasiski / Grp.] = ثقة عالية
[? BF / Grouped ] = تخمين إحصائي فقط
5. جرّب تطبيق أفضل مفتاح في تبويب Classic Ciphers
```
**CryptoForge v1.0**
*专业密码学与密码分析套件*
*旨在服务于所有科学与技术领域*
标签:Python, 加密工具, 密码分析, 密码学, 手动系统调用, 无后门, 桌面应用, 逆向工具