首页/新闻资讯/正文详情

cryptography 库 decrepit 模块详解:遗留对称算法与模式的安全兼容用法

发布时间:2026/9/27 7:27:39 来源:云帆数科 栏目:资讯中心
cryptography 库 decrepit 模块详解:遗留对称算法与模式的安全兼容用法
密码学【免费下载链接】cryptographycryptography is a package designed to expose cryptographic primitives and recipes to Python developers.项目地址https://gitcode.com/gh_mirrors/cr/cryptography点击查看免费下载本文聚焦 Pythoncryptography库当前仓库 gh_mirrors/cr/cryptography中专门收纳陈旧、已弃用或不安全密码算法的cryptography.hazmat.decrepit模块系统讲解其设计动机、六个遗留对称算法ARC4、TripleDES、CAST5、SEED、Blowfish、IDEA与三个遗留分组模式CFB、CFB8、OFB的参数约束、完整用法与底层校验机制。读完本文你将掌握如何在非不得已的向后兼容场景下正确调用这些算法理解密钥长度与 IV 校验在源码中的落地方式并清楚它们为何被强烈不建议用于新应用。decrepit 模块是什么定位与设计动机在cryptography库的目录结构中docs/hazmat/decrepit/index.rst对模块给出了精确定位该模块存放陈旧、已弃用和/或不安全的密码算法只有在罕见的向后兼容或互操作性需求下才可能需要它们。除非必要强烈不建议使用。这里的hazmat是 hazardous materials危险材料的缩写指库中供具备密码学素养的开发者使用的底层原语层decrepit意为破旧、衰败则是这一层中的隔离区——把不应再被新代码使用的算法从主命名空间剥离出来同时保留兼容路径。这一点在 CHANGELOG.rst 中有明确记录43.0.0 版本新增decrepit模块将此前于 37.0.0 弃用的CAST5、SEED、IDEA、Blowfish移入同版本将TripleDES与ARC4移入47.0.0 版本将CFB、OFB、CFB8三个模式移入并将于 49.0.0 从modes模块移除同时把Camellia移入将于 49.0.0 从ciphers模块移除并弃用了 TripleDES 的 64/128 位短密钥。从源码结构看模块实体位于 src/cryptography/hazmat/decrepit/由两部分组成ciphers/algorithms.py遗留对称算法ARC4、TripleDES、Blowfish、CAST5、SEED、IDEA另有源码中已存在但暂未写入文档的Camellia、RC2ciphers/modes.py遗留模式CFB、CFB8、OFB。对应文档为 docs/hazmat/decrepit/ciphers.rst对称算法与 docs/hazmat/decrepit/modes.rst模式。使用前提Cipher 对象与模式的配合decrepit 模块不提供独立的加密入口所有算法都需要与 Cipher 对象配合使用。通用调用骨架如下from cryptography.hazmat.primitives.ciphers import Cipher, modes from cryptography.hazmat.decrepit.ciphers.algorithms import CAST5 key b0123456789abcdef # 16 字节 128 位 iv b01234567 # 8 字节 64 位须与块大小一致 cipher Cipher(CAST5(key), modes.CBC(iv)) encryptor cipher.encryptor() ciphertext encryptor.update(ba secret message) encryptor.finalize() decryptor Cipher(CAST5(key), modes.CBC(iv)).decryptor() plaintext decryptor.update(ciphertext) decryptor.finalize()唯一例外是流密码ARC4它不使用任何模式构造构造Cipher时第二个参数必须显式传None。加密与解密同构异或流因此同一个update调用既可加密也可解密。遗留对称算法详解以下六个算法已按版本 43.0.0 正式文档化于 ciphers.rst其实现细节可在 algorithms.py 中逐一核对。先看整体参数一览算法类型块大小合法密钥长度引入版本关键弱点ARC4流密码—40/56/64/80/128/192/256 位源码另含 160 位43.0.0初始输出流存在严重弱点TripleDES分组密码64 位64/128/192 位实际有效 56/112/168 位43.0.0有已知密码分析缺陷、极慢CAST5分组密码64 位40–128 位按 8 位递增43.0.0弱密钥攻击SEED分组密码128 位128 位43.0.0韩国 KISA 标准域外罕见Blowfish分组密码64 位32–448 位按 8 位递增43.0.0弱密钥攻击IDEA分组密码64 位128 位43.0.0弱密钥攻击ARC4Alleged RC4ARC4 是一种流密码其初始输出流存在严重弱点使用被强烈不建议。它不使用模式构造。合法的密钥长度为 40、56、64、80、128、192 或 256 位文档口径源码中的key_sizes集合实际还包含 160 位密钥必须保密。import os from cryptography.hazmat.decrepit.ciphers.algorithms import ARC4 from cryptography.hazmat.primitives.ciphers import Cipher key os.urandom(16) # 128 位密钥 algorithm ARC4(key) # 流密码不使用任何模式 cipher Cipher(algorithm, modeNone) encryptor cipher.encryptor() ct encryptor.update(ba secret message) decryptor Cipher(algorithm, modeNone).decryptor() decryptor.update(ct) # ba secret message实现上ARC4的name RC4。若把ARC4与CBC、CTR、GCM等分组模式组合使用会抛出UnsupportedAlgorithm_Reasons.UNSUPPORTED_CIPHER这一点在 test_algorithms.py 的test_invalid_mode_algorithm中有直接断言。TripleDES3DESTriple DES 是 NIST 标准化的分组密码具有已知的密码分析缺陷虽然目前尚无实用攻击且速度极慢官方不推荐任何新应用使用旧应用也应考虑迁移。其合法密钥为 64、128 或 192 位由于每个密钥分量含一个奇偶校验字节DES 实际只使用其中的 56、112 或 168 位。历史上可把三条 56 位密钥直接拼接成完整密钥。47.0.0 起的重要变更传入 64 位8 字节或 128 位16 字节密钥已被弃用未来版本将只接受 192 位24 字节密钥。用户应自行扩展短密钥单 DES 密钥用key key key双密钥用key key[:8]。源码中TripleDES.__init__对 8/16 字节密钥会发出utils.DeprecatedIn47警告并自动完成上述扩展最终仍以 24 字节密钥参与运算CHANGELOG.rst 同样记录了这一弃用决策。from cryptography.hazmat.decrepit.ciphers.algorithms import TripleDES from cryptography.hazmat.primitives.ciphers import Cipher, modes key b0123456789abcdef01234567 # 24 字节 192 位3 个 56 位分量 iv b01234567 # 8 字节与 64 位块大小一致 cipher Cipher(TripleDES(key), modes.CBC(iv))测试 test_3des.py 以 NIST 标准向量vectors/cryptography_vectors/ciphers/3DES/下的TCBC*.rsp、TOFB*.rsp、TCFB64*.rsp、TCFB8*.rsp等对 CBC、OFB、CFB、CFB8、ECB 各模式做了全面验证。CAST5CAST-128CAST5 是加拿大政府通信安全机构CSE批准使用的分组密码变长密钥支持 40–128 位、按 8 位递增。示例源自文档 doctestimport os from cryptography.hazmat.decrepit.ciphers.algorithms import CAST5 from cryptography.hazmat.primitives.ciphers import Cipher, modes key os.urandom(16) # 128 位 iv os.urandom(8) # 与块大小64 位一致 cipher Cipher(CAST5(key), modes.CBC(iv))测试覆盖 ECB/CBC/OFB/CFB 四种模式向量来自vectors/cryptography_vectors/ciphers/CAST5/。SEEDSEED 由韩国信息安全局KISA开发定义于 RFC 4269在韩国产业界使用广泛但在其他地区很少见到。固定 128 位密钥、128 位块大小。测试向量包括 RFC 4269ECB、RFC 4196CBC以及seed-ofb.txt、seed-cfb.txt均位于vectors/cryptography_vectors/ciphers/SEED/。BlowfishBlowfish 由 Bruce Schneier 开发已知在弱密钥下易受攻击作者本人也建议用户迁移到更新的算法。支持 32–448 位、按 8 位递增的密钥。vectors/cryptography_vectors/ciphers/Blowfish/下的bf-ecb.txt、bf-cbc.txt、bf-ofb.txt、bf-cfb.txt为其测试向量。IDEAIDEA 诞生于 1991 年是 OpenPGP 标准的可选组件同样存在弱密钥攻击问题不建议用于新应用。固定 128 位密钥、64 位块大小。源码中暂未写入文档的算法Camellia 与 RC2除上述六个文档化算法外algorithms.py 中还包含Camelliablock_size 128密钥 128/192/256 位47.0.0 起移入本模块并将于 49.0.0 从ciphers模块移除见 CHANGELOG.rstRC2block_size 64该实现仅支持 128 位密钥不提供有效密钥位数effective key bits或其他密钥长度支持属受限实现。另外还有一个_DES占位类注释标明实际不支持仅为测试标记。遗留模式详解CFB / CFB8 / OFB47.0.0 起CFB、CFB8、OFB三个模式从cryptography.hazmat.primitives.ciphers.modes移入cryptography.hazmat.decrepit.ciphers.modes详见 modes.rst 与 CHANGELOG.rst。它们与普通模式一样配合Cipher对象使用使用方式与primitives.ciphers.modes中的模式完全相同。三者共同点都将分组密码转换为流密码CFB/OFB 全块反馈CFB8 按 8 位段反馈都不需要填充明文可为任意长度IV 必须随机且不可预测长度必须与算法的块大小一致64 位块 → 8 字节 IV128 位块 → 16 字节 IV。import os from cryptography.hazmat.decrepit.ciphers.algorithms import TripleDES from cryptography.hazmat.decrepit.ciphers.modes import CFB, CFB8, OFB from cryptography.hazmat.primitives.ciphers import Cipher key os.urandom(24) # TripleDES 192 位 iv os.urandom(8) # 64 位块 → 8 字节 IV c1 Cipher(TripleDES(key), CFB(iv)) c2 Cipher(TripleDES(key), CFB8(iv)) c3 Cipher(TripleDES(key), OFB(iv))在 modes.py 中三个类均继承ModeWithInitializationVector构造时先做 bytes-like 类型检查并通过validate_for_algorithm _check_iv_and_key_length完成与算法的配对校验。test_3des.py对 TripleDES 与 CFB/CFB8/OFB 的组合均以 NIST 向量如TCFB64vartext.rsp、TCFB8varkey.rsp、TOFBMMT*.rsp做了验证。参数校验机制密钥与 IV 的强制约束decrepit 算法不是能用就行其对密钥/IV 的约束由共享校验函数在构造时强制执行这正是参数合法性可验证的底层依据。密钥校验_verify_key_sizeprimitives/_cipheralgorithm.py先确认密钥是 bytes-like再检查len(key) * 8是否落在算法的key_sizes集合内否则抛出ValueError(Invalid key size (...) for algorithm name.)。每个算法类的key_size属性返回len(self.key) * 8。对应测试test_algorithms.py分别覆盖了合法尺寸参数化用例、非法尺寸抛ValueError、非法类型抛TypeError三类场景例如ARC4(b0*34)会因 272 位不在合法集合中而失败。IV 校验_check_iv_and_key_lengthprimitives/_modes.py要求算法必须是BlockCipherAlgorithm否则抛UnsupportedAlgorithm并校验 IV 长度与块大小严格相等不满足则抛ValueError。这正是IV 必须与块大小同长这一文档约束在源码中的强制实现。测试与标准向量验证该模块的正确性并非空口之谈仓库提供两套测试互为印证tests/hazmat/primitives/decrepit/test_algorithms.py验证六个算法的密钥尺寸边界、非法密钥类型/尺寸的异常行为以及 ARC4 与分组模式组合时的UnsupportedAlgorithmtests/hazmat/primitives/decrepit/test_3des.py用 NIST 官方.rsp测试向量对 TripleDES 的 CBC/OFB/CFB/CFB8/ECB 各模式做加密/解密一致性检验。向量数据存放于 vectors/cryptography_vectors/ciphers/ 下对应的3DES/、ARC4/、Blowfish/、CAST5/、IDEA/、SEED/目录。此外仓库在 docs/development/custom-vectors/ 中还提供了这些算法的自生成/交叉验证脚本如generate_arc4.py/verify_arc4.go、generate_cast5.py/verify_cast5.go、generate_idea.py、generate_seed.py说明实现经过了跨语言、跨实现的向量核对。迁移与安全建议根据文档口径decrepit 模块中的算法仅在向后兼容或与遗留系统互操作的例外场景下才应使用除此之外一律强烈不建议。若你的场景允许更换算法应优先考虑 primitives 层 提供的现代原语尤其是带认证加密的 AEAD 方案如 AES-GCM它们在 symmetric-encryption.rst 与 aead.rst 中有完整使用说明。实践中的几条具体建议新代码零使用这些算法不提供任何安全增益且部分存在弱密钥、初始输出流弱点等已知缺陷遗留代码迁移优先TripleDES 与 Blowfish 的替换优先级最高——前者极慢且有密码分析缺陷后者有弱密钥问题留意弃用时间线TripleDES 的 8/16 字节密钥已弃用未来仅接受 24 字节CFB/OFB/CFB8与Camellia将于 49.0.0 从旧命名空间移除旧 import 路径应尽快切换至cryptography.hazmat.decrepit参数严格遵守即使必须使用也要满足文档与源码双重约束——密钥落在合法尺寸集合内、IV 长度等于块大小否则构造阶段就会抛出ValueError/TypeError/UnsupportedAlgorithm。总而言之decrepit模块是cryptography库为历史包袱设计的安全隔离舱它保留了旧算法可调用的最后通道同时通过文档警示、参数强校验、版本弃用与测试向量四重手段最大限度降低被误用的风险。理解它的边界是在真实系统中正确处理遗留互操作需求的前提。赞分享密码学【免费下载链接】cryptographycryptography is a package designed to expose cryptographic primitives and recipes to Python developers.项目地址https://gitcode.com/gh_mirrors/cr/cryptography点击查看免费下载相关推荐es-toolkit 兼容模块 invoke 详解按路径安全调用对象方法的完整指南es toolkit 兼容模块 invoke 详解按路径安全调用对象方法的完整指南 导读 invoke 是 es toolkit 的 Lodash 兼容模块前端后端3 步让老 Mac 装上新版 macOSOpenCore Legacy Patcher 手把手实战指南3 步让老 Mac 装上新版 macOSOpenCore Legacy Patcher 手把手实战指南 当 2017 年的 MacBook Pro 弹出此电操作系统固件驱动开发cytoscape.js 集合运算详解eles.symmetricDifference对称差的用法与实现原理cytoscape.js 集合运算详解eles.symmetricDifference对称差的用法与实现原理 导读 本文围绕 cytoscape.js 元数据可视化上一篇为什么选择Duktape5个关键优势让嵌入式开发更简单下一篇TypeScript 7 原生工具链走向整合tsgo 名称退役、代码库回归主仓库、VS Code 扩展捆绑创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

SeaTunnel Sink Options Placeholders 使用指南:通过占位符动态获取上游表元数据
SeaTunnel Sink Options Placeholders 使用指南:通过占位符动态获取上游表元数据

数据工程大数据批处理流处理 【免费下载链接】seatunnel SeaTunnel is a next-generation super high-performance, distributed, massive data integration tool. 项目地址: https://gitcode.com/gh_mirrors/sea/seatunnel 点击查看 免费下载 导读 SeaTunnel 的 … · 2026/9/27 7:27:33

合肥那个公司做网站优化好?3个避坑指南救回百万流量
合肥那个公司做网站优化好?3个避坑指南救回百万流量

合肥那个公司做网站优化好?3个避坑指南救回百万流量 模板网站太丑,功能还跟不上业务,这大概是很多合肥中小企业老板最头疼的事。你找一家本地公司,对方拍着胸脯说“包设计、包上线”,结果交出来的东西,看着像十年前的老黄历,手机打开还是乱码。这时候… · 2026/9/27 7:27:27

后台控制网站关键词设置的详细代码最佳实践
后台控制网站关键词设置的详细代码最佳实践

5行代码防挂马,后台控制网站关键词设置源码下载指南 网站被黑挂马却毫无察觉,甚至首页突然弹出博彩广告,这种噩梦般的场景很多站长都经历过。这时候你慌不慌?很多人第一反应是找黑客,但90%的情况其实是因为后台权限管控太松,或者关键词设置逻辑存在… · 2026/9/27 7:27:14

边缘 AI 推理中的深度可分离卷积(Depthwise Separable Conv)通道重排与向量汇编优化
边缘 AI 推理中的深度可分离卷积(Depthwise Separable Conv)通道重排与向量汇编优化

边缘 AI 推理中的深度可分离卷积(Depthwise Separable Conv)通道重排与向量汇编优化在以 MobileNet(V1/V2/V3/V4)、ShuffleNet、Xception 以及各类轻量化端侧检测主干网络中,深度可分离卷积(Depthwise Sepa… · 2026/9/27 8:02:27

kube-prometheus 版本演进实战指南:从 release-0.9 到 release-0.19 的核心变更与迁移要点
kube-prometheus 版本演进实战指南:从 release-0.9 到 release-0.19 的核心变更与迁移要点

云原生可观测性指标监控监控大盘告警 【免费下载链接】kube-prometheus Use Prometheus to monitor Kubernetes and applications running on Kubernetes 项目地址: https://gitcode.com/gh_mirrors/ku/kube-prometheus 点击查看 免费下载 kube-prometheus 是一套通… · 2026/9/27 8:02:21

5个核心维度一文搞懂网站开发师培训避坑指南
5个核心维度一文搞懂网站开发师培训避坑指南

5个核心维度一文搞懂网站开发师培训避坑指南 改个需求建站公司拖一周,这种憋屈事儿你肯定也干过。明明是个小按钮的颜色调整,对方却说要排期、要测试、要走流程,结果一周过去,你的业务窗口期都关了。想自己找靠谱的开发团队,或者干脆自己上手搞,却发现… · 2026/9/27 8:02:21

汕头做网站优化公司速查手册:避坑指南与实战复盘
汕头做网站优化公司速查手册:避坑指南与实战复盘

汕头做网站优化公司速查手册:避坑指南与实战复盘 网站上线三个月,后台流量数据依然惨不忍睹,每天访问量个位数,甚至不如朋友圈发个动态的曝光量。这种“建了等于没建”的焦虑,是汕头乃至全国无数中小企业主和运营人员的真实写照。很多老板花了几万块找所… · 2026/9/27 8:02:15

Operit 数据救援界面兼容性核对指南:v1.12.1 已发布接口、静态检查与修复保全策略
Operit 数据救援界面兼容性核对指南:v1.12.1 已发布接口、静态检查与修复保全策略

AI Agent人工智能大模型AI 应用工具调用本地部署MCP ClientsAgent 记忆 【免费下载链接】Operit The most powerful AI agent and AI chat software on Android/Operit是一款Android上能力最为强大、发展最久的AI Agent 项目地址: https://gitcode.com/gh_mirrors/o… · 2026/9/27 8:02:09

基于 OpenTelemetry 的多 Agent 异常链路秒级根因定位大盘实战
基于 OpenTelemetry 的多 Agent 异常链路秒级根因定位大盘实战

基于 OpenTelemetry 的多 Agent 异常链路秒级根因定位大盘实战在包含数十个深层调用与递归委派的复杂多智能体系统(MAS)中,当顶层用户请求抛出 500 Internal Server Error 或生成了严重的逻辑幻觉时,传统的运维排障陷入了极其痛苦… · 2026/9/27 8:02:03

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码