关于对称密码算法的一些基本知识

算法特性

算法支持分组模式块大小支持的密钥长度(字节)推荐模式说明
AESECB, CBC, CFB, OFB, CTR, GCM1616 / 24 / 32CBC / GCM现代标准算法,广泛支持,GCM 模式具备认证功能(AEAD)
DESECB, CBC, CFB, OFB, CTR88❌(已弃用)已过时,不安全,仅用于兼容旧系统
3DESECB, CBC, CFB, OFB, CTR816 / 24CBC比 DES 强,仍不推荐用于新系统,逐步被淘汰
SM4ECB, CBC, CFB, OFB, CTR, GCM1616CBC / GCM国密标准,对称安全,结构类似 AES

模式说明

模式描述是否需要 padding是否需要 IV / Nonce
ECB每块独立加密,结构重复易泄露明文✅ 是❌ 否
CBC上一块密文与当前块异或后加密✅ 是✅ 是
CFB密文反馈,适用于流式数据❌ 否✅ 是
OFB输出反馈,变成伪随机流❌ 否✅ 是
CTR使用计数器生成伪随机流与明文异或❌ 否✅ 是(Nonce)
GCM基于 CTR 的 AEAD 模式,支持认证和加密❌ 否✅ 是(Nonce)

mac类

MAC 类型是否需要手动 padding原因加密模式安全性是否标准
CBC-MAC✅ 是是原始 CBC 加密,需手动对齐CBC有条件安全(固定长度)✅ 是
CMAC❌ 否内部自带 padding 逻辑CBC + 改进填充安全,推荐✅ 是(NIST SP 800-38B)
HMAC❌ 否基于哈希,自动处理 padding哈希算法安全,广泛使用✅ 是(RFC 2104)
GMAC❌ 否AEAD 模式自动处理GCM(AES)AEAD 支持认证✅ 是(NIST SP 800-38D)

为什么没有 ECB-MAC?
🔒 ECB 模式(Electronic Codebook)并不安全用于 MAC!
ECB 的特性:

每个输入块独立加密,不依赖其他块

相同的输入块产生相同的输出块 → 没有链式依赖

无法提供“完整性保护”或“认证”

这就意味着:

攻击者可以任意重排、替换块,而不会影响“MAC”值的计算,导致严重安全问题。

算法块大小Padding 需求Padding 方式
CBC-MAC (AES/SM4)16 字节需要PKCS#7 Padding(16字节对齐)
CBC-MAC (DES)8 字节需要PKCS#7 Padding(8字节对齐)

CMAC 是 CBC-MAC 的改进版,CMAC 内部自动处理 padding,调用者无需关心

使用建议

场景推荐算法 + 模式说明
一般数据加密AES-CBC 或 SM4-CBC安全性高,兼容性好,注意使用随机 IV
安全通信 / 认证加密AES-GCM 或 SM4-GCM支持 AEAD,可认证附加数据和密文
国密合规场景SM4-CBC / SM4-GCM满足国产化要求
老旧系统兼容3DES-CBC性能差但可兼容,推荐逐步迁移到 AES/SM4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值