表格简明概括了三类主流加密算法的核心特征以下是更系统的对比与补充说明类别代表算法特点速度典型用途安全性备注对称加密DES已淘汰、AES推荐、SM4国密加解密使用相同密钥需安全分发密钥适合大数据量加解密快数据传输加密、磁盘加密、TLS会话密钥AES-128/256、SM4为当前安全标准DES密钥太短56位易被暴力破解非对称加密RSA、ECC、SM2国密基于数学难题大数分解/离散对数/椭圆曲线公钥公开私钥保密支持数字签名与密钥交换慢尤其RSA密钥长时数字签名、SSL/TLS握手、身份认证、密钥协商RSA-2048、SM2基于ECC效率更高、密钥更短、安全性更强摘要算法哈希MD5不安全、SHA-1弃用、SHA-256、SM3国密输入任意长度输出固定长度摘要抗碰撞性、单向不可逆无密钥中→快取决于实现完整性校验、密码存储需加盐、数字签名基础MD5/SHA-1已遭碰撞攻击禁止用于安全场景SHA-256和SM3为当前推荐标准✅ 补充说明实际系统中常混合使用如TLS协议用RSA/SM2协商AES会话密钥再用AES加密数据国密体系GM/T系列标准强调自主可控SM4对称、SM2非对称、SM3哈希、SM9标识密码构成完整国产密码算法族“速度”是相对概念AES在硬件加速下可达GB/s级RSA-2048签名约比AES慢1000倍以上。# 示例Python中常用加密库调用示意需安装cryptography或pycryptodomefromcryptography.hazmat.primitives.ciphersimportCipher,algorithms,modesfromcryptography.hazmat.primitives.asymmetricimportrsa,paddingfromcryptography.hazmat.primitivesimporthashes,hmac# AES对称加密简化示意# key os.urandom(32) # AES-256密钥# cipher Cipher(algorithms.AES(key), modes.CBC(iv))# RSA非对称加密公钥加密# public_key.encrypt(data, padding.OAEP(mgfpadding.MGF1(algorithmhashes.SHA256()), algorithmhashes.SHA256(), labelNone))# SM3/SM4需使用国密专用库如gmssl或pygmsm非对称加密不适合直接加密大量数据主要原因有以下三点计算开销巨大非对称算法如RSA、SM2基于复杂数学运算大数模幂、椭圆曲线标量乘其加解密时间复杂度远高于对称算法。例如RSA-2048加密速度通常比AES-256慢数百至数千倍且随数据长度增长而显著恶化。明文长度受限以RSA为例若使用PKCS#1 v1.5或OAEP填充最大可加密明文长度 密钥长度bit÷8 − 填充开销如OAEP需约42字节。例如RSA-2048最多仅能加密约245字节数据超出则报错或需分块——但分块加密会严重削弱安全性丧失语义安全性、易受重放/篡改攻击。缺乏标准化的大数据加密模式非对称算法未定义类似AES的CBC、GCM等分组操作模式无法安全处理任意长度消息强行分块会导致密文膨胀、密钥重复使用风险及侧信道隐患。✅ 通用解决方案混合加密体制Hybrid Encryption即结合两类算法优势用非对称加密安全传输一个随机生成的对称密钥如AES-256密钥用该对称密钥高效加密实际业务数据支持GB级文件、流式加密、认证加密如AES-GCM接收方先用私钥解出对称密钥再用其解密数据。典型应用实例TLS/SSL握手客户端用服务器RSA/SM2公钥加密预主密钥 → 双方派生出AES会话密钥 → 后续通信全用AES加密PGP/GPG邮件加密随机生成AES密钥加密邮件正文再用收件人RSA公钥加密该AES密钥一并发送国密应用如电子政务SM2加密SM4会话密钥 SM4加密业务数据 SM3签名保障完整性。# 混合加密伪代码示意fromcryptography.hazmat.primitives.asymmetricimportrsa,paddingfromcryptography.hazmat.primitives.ciphersimportCipher,algorithms,modesimportos# 1. 生成随机AES密钥aes_keyos.urandom(32)# AES-256ivos.urandom(16)# 2. 用RSA公钥加密AES密钥而非原始数据encrypted_aes_keypublic_key.encrypt(aes_key,padding.OAEP(mgfpadding.MGF1(algorithmhashes.SHA256()),algorithmhashes.SHA256(),labelNone))# 3. 用AES密钥加密大数据cipherCipher(algorithms.AES(aes_key),modes.CBC(iv))encryptorcipher.encryptor()ciphertextencryptor.update(data)encryptor.finalize()# 发送encrypted_aes_key iv ciphertext
国密体系(GM/T系列标准)强调自主可控:SM4(对称)、SM2(非对称)、SM3(哈希)、SM9(标识密码)
表格简明概括了三类主流加密算法的核心特征以下是更系统的对比与补充说明类别代表算法特点速度典型用途安全性备注对称加密DES已淘汰、AES推荐、SM4国密加解密使用相同密钥需安全分发密钥适合大数据量加解密快数据传输加密、磁盘加密、TLS会话密钥AES-128/256、SM4为当前安全标准DES密钥太短56位易被暴力破解非对称加密RSA、ECC、SM2国密基于数学难题大数分解/离散对数/椭圆曲线公钥公开私钥保密支持数字签名与密钥交换慢尤其RSA密钥长时数字签名、SSL/TLS握手、身份认证、密钥协商RSA-2048、SM2基于ECC效率更高、密钥更短、安全性更强摘要算法哈希MD5不安全、SHA-1弃用、SHA-256、SM3国密输入任意长度输出固定长度摘要抗碰撞性、单向不可逆无密钥中→快取决于实现完整性校验、密码存储需加盐、数字签名基础MD5/SHA-1已遭碰撞攻击禁止用于安全场景SHA-256和SM3为当前推荐标准✅ 补充说明实际系统中常混合使用如TLS协议用RSA/SM2协商AES会话密钥再用AES加密数据国密体系GM/T系列标准强调自主可控SM4对称、SM2非对称、SM3哈希、SM9标识密码构成完整国产密码算法族“速度”是相对概念AES在硬件加速下可达GB/s级RSA-2048签名约比AES慢1000倍以上。# 示例Python中常用加密库调用示意需安装cryptography或pycryptodomefromcryptography.hazmat.primitives.ciphersimportCipher,algorithms,modesfromcryptography.hazmat.primitives.asymmetricimportrsa,paddingfromcryptography.hazmat.primitivesimporthashes,hmac# AES对称加密简化示意# key os.urandom(32) # AES-256密钥# cipher Cipher(algorithms.AES(key), modes.CBC(iv))# RSA非对称加密公钥加密# public_key.encrypt(data, padding.OAEP(mgfpadding.MGF1(algorithmhashes.SHA256()), algorithmhashes.SHA256(), labelNone))# SM3/SM4需使用国密专用库如gmssl或pygmsm非对称加密不适合直接加密大量数据主要原因有以下三点计算开销巨大非对称算法如RSA、SM2基于复杂数学运算大数模幂、椭圆曲线标量乘其加解密时间复杂度远高于对称算法。例如RSA-2048加密速度通常比AES-256慢数百至数千倍且随数据长度增长而显著恶化。明文长度受限以RSA为例若使用PKCS#1 v1.5或OAEP填充最大可加密明文长度 密钥长度bit÷8 − 填充开销如OAEP需约42字节。例如RSA-2048最多仅能加密约245字节数据超出则报错或需分块——但分块加密会严重削弱安全性丧失语义安全性、易受重放/篡改攻击。缺乏标准化的大数据加密模式非对称算法未定义类似AES的CBC、GCM等分组操作模式无法安全处理任意长度消息强行分块会导致密文膨胀、密钥重复使用风险及侧信道隐患。✅ 通用解决方案混合加密体制Hybrid Encryption即结合两类算法优势用非对称加密安全传输一个随机生成的对称密钥如AES-256密钥用该对称密钥高效加密实际业务数据支持GB级文件、流式加密、认证加密如AES-GCM接收方先用私钥解出对称密钥再用其解密数据。典型应用实例TLS/SSL握手客户端用服务器RSA/SM2公钥加密预主密钥 → 双方派生出AES会话密钥 → 后续通信全用AES加密PGP/GPG邮件加密随机生成AES密钥加密邮件正文再用收件人RSA公钥加密该AES密钥一并发送国密应用如电子政务SM2加密SM4会话密钥 SM4加密业务数据 SM3签名保障完整性。# 混合加密伪代码示意fromcryptography.hazmat.primitives.asymmetricimportrsa,paddingfromcryptography.hazmat.primitives.ciphersimportCipher,algorithms,modesimportos# 1. 生成随机AES密钥aes_keyos.urandom(32)# AES-256ivos.urandom(16)# 2. 用RSA公钥加密AES密钥而非原始数据encrypted_aes_keypublic_key.encrypt(aes_key,padding.OAEP(mgfpadding.MGF1(algorithmhashes.SHA256()),algorithmhashes.SHA256(),labelNone))# 3. 用AES密钥加密大数据cipherCipher(algorithms.AES(aes_key),modes.CBC(iv))encryptorcipher.encryptor()ciphertextencryptor.update(data)encryptor.finalize()# 发送encrypted_aes_key iv ciphertext