package
module
Version:
v0.0.0-...-f6092e9
Opens a new window with list of versions in this module.
Published: Mar 17, 2025
License: MIT
Opens a new window with license information.
Imports: 0
Opens a new window with list of imports.
Imported by: 0
Opens a new window with list of known importers.
README
¶
Go Simple Crypto
这是一个用Go语言实现的分组密码教学项目,旨在帮助学习者理解常见的分组密码算法及其工作模式。本项目的代码经过精心设计,注重可读性和教学价值,适合密码学初学者学习和参考。
项目特点
- 清晰的代码结构和详细的注释
- 完整实现了常见算法(AES、DES、Blowfish)
- 支持多种分组密码工作模式(ECB、CBC、CFB、OFB、CTR、GCM)
- 支持多种常用填充方式(PKCS#7、PKCS#5、ISO9797M1、ISO9797M1额外补0、ISO9797M2、ISO7816、ANSIX923 、ISO10126、TBC、Zero、None)
- 提供丰富的示例和测试用例
加密算法
- [] SM2
- ✅ SM3
- ✅ SM4
- [] SM9
- [] ZUC
- ✅ AES
- ✅ DES
- [] 2-key des
- [] 3-key des
- ✅ Blowfish
- [] Twofish
- ✅ RC4
- [] RC5
- [] RSA
- [] DSA
- [] ECDSA
- [] EdDSA
- [] Curve25519
- [] Ed25519
- [] Secp256k1
- [] NIST P-256
分组模式
- ✅ ECB
- ✅ CBC
- ✅ CFB
- ✅ OFB
- ✅ CTR
- [] GCM
填充模式
- ✅ PKCS#7
- [] PKCS#5
- [] M1
- [] M1(+0)
- [] M2
- ✅ ISO7816
- ✅ ANSIX923
- [] ISO10126
- [] TBC
- [] Zero
- ✅ None
项目结构
github.com/laenix/gsc/
├── aes/ - AES算法实现
│ └── internal/ - AES算法内部常量和辅助函数
├── des/ - DES算法实现
│ └── internal/ - DES算法内部常量和辅助函数
├── blowfish/ - Blowfish算法实现
│ └── internal/ - Blowfish算法内部常量和辅助函数
├── twofish/ - Twofish算法实现
│ └── internal/ - Twofish算法内部常量和辅助函数
├── modes/ - 分组密码工作模式
│ ├── modes.go - 通用接口定义
│ ├── ecb.go - ECB模式实现
│ ├── cbc.go - CBC模式实现
│ ├── cfb.go - CFB模式实现
│ ├── ofb.go - OFB模式实现
│ ├── ctr.go - CTR模式实现
│ ├── gcm.go - GCM模式实现
│ └── internal/ - 内部辅助函数
└── padding/ - 填充方式
└── padding.go - 填充方式
算法实现
AES (Advanced Encryption Standard)
- 支持128/192/256位密钥长度
- 实现了完整的加密和解密过程
- 包含密钥扩展、SubBytes、ShiftRows、MixColumns等操作
- 使用查表优化的S-box实现
DES (Data Encryption Standard)
- 支持64位密钥(实际使用56位)
- 实现了完整的Feistel网络结构
- 包含初始置换(IP)、最终置换(IP^-1)
- 实现了16轮Feistel函数,包括:
- 扩展置换(E)
- S-box替换
- P-box置换
- 密钥调度算法
分组密码工作模式
-
ECB (Electronic Codebook)
- 最简单的工作模式
- 相同的明文块产生相同的密文块
- 不推荐用于实际应用
- 适合教学理解基本概念
-
CBC (Cipher Block Chaining)
- 使用前一个密文块来加密当前明文块
- 需要初始化向量(IV)
- 提供更好的安全性
- 不支持并行处理
-
CFB (Cipher Feedback)
- 将分组密码转换为流密码
- 需要初始化向量(IV)
- 支持实时加密
- 错误传播限制在一个分组内
-
OFB (Output Feedback)
- 将分组密码转换为流密码
- 需要初始化向量(IV)
- 预先生成密钥流
- 不会产生错误传播
-
CTR (Counter)
- 将分组密码转换为流密码
- 使用计数器生成密钥流
- 支持并行处理
- 无需填充
-
GCM (Galois/Counter Mode)
- 基于CTR模式
- 提供认证功能(AEAD)
- 支持额外认证数据(AAD)
- 高效且安全
安全提示
- 本项目仅用于教学目的,不建议在生产环境中使用
- 在实际应用中,应使用标准库的加密实现
- ECB模式不安全,不应在实际应用中使用
- 使用CBC/CFB/OFB模式时,必须使用安全的随机IV
- 建议使用GCM等AEAD模式来提供数据认证
- DES算法已不再安全,仅用于学习目的
贡献
欢迎提交Issue和Pull Request来改进这个教学项目。如果您发现任何问题或有改进建议,请随时提出。
许可证
MIT License
Documentation
¶
There is no documentation for this package.
Source Files
¶
Directories
¶
Click to show internal directories.
Click to hide internal directories.