RIOT PSA Crypto MAC 配置测试深度解析:以 HMAC SHA-256 为例验证 psa_mac 模块与后端选择机制
物联网嵌入式操作系统实时系统【免费下载链接】RIOTRIOT - The friendly OS for IoT项目地址https://gitcode.com/GitHub_Trending/riot/RIOT点击查看免费下载本文聚焦 RIOT 操作系统中 tests/sys/psa_crypto_mac 测试它是对 PSA Crypto 模块MAC 部分的专项配置测试验证在最小化模块裁剪仅启用 MAC、不引入对称加密与签名等无关组件的前提下HMAC SHA-256 计算能否正确运行。读完本文你将掌握该测试的目录结构、构建配置、模块依赖链与后端自动选择机制理解psa_mac_compute()的底层调用链并学会如何在自己的 RIOT 应用中裁剪出最小可用的 PSA MAC 配置。测试定位为什么需要一份仅 MAC的配置测试PSA Crypto 是 Arm 提出的跨厂商密码学 API 规范RIOT 在 sys/psa_crypto 中提供了完整实现涵盖对称加密cipher、消息认证码MAC、哈希hash、非对称签名asymmetric与密钥管理key management等能力。模块数量众多每个能力又对应若干伪模块与可选后端。examples/advanced/psa_crypto 是展示 PSA Crypto API 用法的综合示例AES 128 CBC、HMAC SHA-256、ECDSA P256、EdDSA Ed25519 四种操作一应俱全但综合示例无法回答一个问题当只启用 MAC 功能、其他全部裁剪时配置是否正确、依赖是否自洽。这正是tests/sys/psa_crypto_mac存在的意义——README 开宗明义This is a configuration test for only the mac of the PSA crypto module. It is based off the psa_crypto example.因此该测试目录中的 Makefile 只引入psa_crypto、psa_mac、psa_mac_hmac_sha_256三个模块测试程序也仅执行 HMAC SHA-256 一次运算以此验证模块裁剪后构建、链接、运行全流程的正确性。测试目录结构一览tests/sys/psa_crypto_mac/ ├── Makefile # 模块选择与编译参数 ├── Makefile.ci # 内存不足、不参与 CI 的板子清单 ├── README.md # 测试说明本文关联文档 ├── example_hmac_sha256.c # HMAC SHA-256 计算逻辑源自 psa_crypto 示例 ├── main.c # 测试入口计时执行并检查返回值 └── tests/ └── 01-run.py # testrunner 脚本断言串口输出 All Done构建配置逐行解析三个模块与一个编译参数Makefile 是整个测试的核心配置内容如下include ../Makefile.sys_common USEMODULE ztimer USEMODULE ztimer_usec USEMODULE psa_crypto USEMODULE psa_mac USEMODULE psa_mac_hmac_sha_256 CFLAGS -DCONFIG_PSA_SINGLE_KEY_COUNT1 include $(RIOTBASE)/Makefile.include逐项解读USEMODULE psa_crypto启用 PSA Crypto 实现本体。在 Makefile.dep 中它会自动引入random与prng_sha256prng作为随机数依赖。USEMODULE psa_mac启用 MAC 功能。依赖解析见 sys/psa_crypto/Makefile.deppsa_mac会进一步引入psa_key_management因为 MAC 计算必须先从密钥槽获取密钥材料。USEMODULE psa_mac_hmac_sha_256声明具体算法HMAC SHA-256。依赖解析见 sys/psa_crypto/Makefile.dep它会自动引入psa_hash与psa_hash_sha_256注释说明超过一个 SHA-256 分组长度的密钥需要先做哈希并根据目标平台特性自动选择一个后端。CFLAGS -DCONFIG_PSA_SINGLE_KEY_COUNT1将单密钥槽数量配置为 1。这个值决定了 psa_crypto_slot_management.h 中的PSA_SINGLE_KEY_COUNT进而决定PSA_KEY_SLOT_COUNT PSA_PROTECTED_KEY_COUNT PSA_ASYMMETRIC_KEYPAIR_COUNT PSA_SINGLE_KEY_COUNT。测试程序同时导入 32 字节和 128 字节两把 HMAC 密钥但两者串行使用、先psa_destroy_key再导入所以单槽配置足以覆盖。这是对配置测试身份的又一次印证显式压到最小资源占用。后端自动选择periph 硬件加速还是 RIOT 软件哈希RIOT 的 PSA 实现允许同一算法由不同后端提供板载外设、软件库、安全元件并在 sys/psa_crypto/Makefile.include 中把psa_mac_hmac_sha_256及其三个后端声明为伪模块且强制同一时刻只能选择一个后端## MAC PSEUDOMODULES psa_mac PSEUDOMODULES psa_mac_hmac_sha_256 PSEUDOMODULES psa_mac_hmac_sha_256_backend_periph PSEUDOMODULES psa_mac_hmac_sha_256_backend_riot PSEUDOMODULES psa_mac_hmac_sha_256_custom_backend # check that one and only one backend has been selected ifneq (,$(filter psa_mac_hmac_sha_256,$(USEMODULE))) ifneq (1,$(call backends,psa_mac_hmac_sha_256)) $(error One (and only one) backend should be selected for psa_mac_hmac_sha_256) endif endif选哪个后端取决于目标板卡是否具备periph_hmac_sha_256特性。依赖解析在 Makefile.dep 中完成## HMAC SHA-256 ifneq (,$(filter psa_mac_hmac_sha_256,$(USEMODULE))) USEMODULE psa_hash USEMODULE psa_hash_sha_256 ifeq (,$(filter psa_mac_hmac_sha_256_custom_backend,$(USEMODULE))) FEATURES_OPTIONAL periph_hmac_sha_256 include $(RIOTMAKE)/features_check.inc.mk ifneq (,$(filter periph_hmac_sha_256,$(FEATURES_USED))) USEMODULE psa_mac_hmac_sha_256_backend_periph else USEMODULE psa_mac_hmac_sha_256_backend_riot endif endif endif目标板具备periph_hmac_sha_256特性例如 nRF52840 的 CryptoCell 310 加速器自动选择psa_mac_hmac_sha_256_backend_periph并追加FEATURES_REQUIRED periph_hmac_sha_256否则回退到psa_mac_hmac_sha_256_backend_riot该后端依赖hashes、psa_riot_hashes、psa_riot_hashes_hmac_sha256即 RIOT 自带的软件哈希实现Makefile.dep应用也可以通过显式声明psa_mac_hmac_sha_256_custom_backend跳过自动选择改用自定义后端如安全元件。用native板构建时native不具备periph_hmac_sha_256因此会走 RIOT 软件哈希路径用BOARDnrf52840dk构建时则会自动接入 CryptoCell 310 硬件加速。上游示例 examples/advanced/psa_crypto/README.md 给出了同一块 nRF52840dk 上不同后端的 HMAC SHA-256 耗时对比CryptoCell 310 约 282 µs、RIOT 软件哈希约 468 µs、ATECC608A 安全元件约 56376 µs供读者直观理解后端差异。测试程序走读计时 状态断言入口 main.cmain.c 使用 RIOT 的ztimer对 HMAC 计算计时并检查返回值#include stdio.h #include psa/crypto.h #include ztimer.h extern psa_status_t example_hmac_sha256(void); int main(void) { bool failed false; psa_status_t status; ztimer_acquire(ZTIMER_USEC); ztimer_now_t start ztimer_now(ZTIMER_USEC); status example_hmac_sha256(); printf(HMAC SHA256 took %d us\n, (int)(ztimer_now(ZTIMER_USEC) - start)); if (status ! PSA_SUCCESS) { failed true; printf(HMAC SHA256 failed: %s\n, psa_status_to_humanly_readable(status)); } ztimer_release(ZTIMER_USEC); if (failed) { puts(Tests failed...); } else { puts(All Done); } return 0; }关键点程序没有显式调用psa_crypto_init()。RIOT 的 PSA 实现通过自动初始化机制完成库初始化psa_crypto.c 中的psa_crypto_init()负责初始化密钥槽并置位lib_initialized若未初始化psa_mac_compute()会直接返回PSA_ERROR_BAD_STATE。若返回码非PSA_SUCCESS通过psa_status_to_humanly_readable()打印可读的错误名同一函数在 psa_crypto.c 中把错误码映射为字符串。通过ztimer打印耗时作为后端差异的实测佐证——这继承了上游示例测量处理时间的做法。HMAC SHA-256 计算逻辑example_hmac_sha256.c 头注释明确说明内容复制自examples/advanced/psa_crypto。它依次演示了 PSA Crypto MAC 的完整用法初始化密钥属性psa_key_attributes_init()后依次设置算法PSA_ALG_HMAC(PSA_ALG_SHA_256)、用途PSA_KEY_USAGE_SIGN_MESSAGE、位长PSA_BYTES_TO_BITS(HMAC_KEY_LEN)与类型PSA_KEY_TYPE_HMAC按输出长度分配摘要缓冲PSA_MAC_LENGTH(PSA_KEY_TYPE_HMAC, HMAC_KEY_LEN, PSA_ALG_HMAC(PSA_ALG_SHA_256))导入 32 字节密钥标准 RFC 4231 测试向量0x0b重复 32 次并调用psa_mac_compute()一次性完成 HMAC 计算销毁密钥psa_destroy_key(key_id)导入 128 字节长密钥并再次psa_mac_compute()验证超过 SHA-256 分组长度64 字节的密钥路径这正是 Makefile.dep 中长密钥需要先哈希注释对应的代码路径全程若任一步返回非PSA_SUCCESS即提前返回。值得注意的细节源码注释指出某些 PSA 后端要求数据位于 RAM 而非 ROM因此这些值不能是const这解释了HMAC_MSG[]等缓冲区为何特意声明为可写的static数组——这是与硬件后端如 CryptoCell、安全元件兼容的实践。底层实现psa_mac_compute 的完整调用链测试调用的是公开 PSA APIRIOT 在 psa_crypto.c 中实现psa_mac_compute()其流程可概括为五步状态与参数检查库未初始化返回PSA_ERROR_BAD_STATEinput/mac/mac_length为 NULL 返回PSA_ERROR_INVALID_ARGUMENT读取密钥属性psa_get_key_attributes()取得密钥的类型与位长算法与缓冲区校验内部函数psa_mac_validate_alg_and_key_and_size()psa_crypto.c检查PSA_ALG_IS_HMAC(alg)否则PSA_ERROR_NOT_SUPPORTED、PSA_MAC_LENGTH()计算出的 MAC 长度不小于 4 字节过短的 MAC 可被暴力破解代码注释明确以 32 位为安全下限、不超过PSA_MAC_MAX_SIZE以及调用方提供的缓冲mac_size是否够大否则PSA_ERROR_BUFFER_TOO_SMALL获取并锁定密钥槽psa_get_and_lock_key_slot_with_policy()以PSA_KEY_USAGE_SIGN_MESSAGE策略校验用途并加锁防止并发访问位置分发执行psa_location_dispatch_mac_compute()根据密钥所在位置本地内存、受保护内存或安全元件路由到底层实现。底层实现再经 psa_crypto_algorithm_dispatch.c 按算法分发#if IS_USED(MODULE_PSA_MAC_HMAC_SHA_256) case PSA_ALG_HMAC(PSA_ALG_SHA_256): return psa_mac_compute_hmac_sha256(attributes, key_data, *key_bytes, input, input_length, mac, mac_size, mac_length); #endifpsa_mac_compute_hmac_sha256()等低层包装函数的声明集中在 sys/psa_crypto/include/psa_mac.h每个算法HMAC MD5/SHA-1/SHA-224/SHA-256/SHA-384/SHA-512/SHA3 系列都对应一组compute/verify/sign_setup/verify_setup/update/sign_finish/verify_finish/abort包装由IS_USED(MODULE_PSA_MAC_HMAC_*)条件编译控制——这正是 Makefile 中只启用psa_mac_hmac_sha_256时其余算法代码全部被裁剪掉的原因也是该测试能验证最小 MAC 配置的机制基础。运行与自动化验证测试的自动化断言由 tests/01-run.py 完成——它只做一件事通过 RIOT testrunner 框架等待串口输出精确匹配All Done匹配即判测试通过。常用运行方式RIOT 标准流程# 在 native 上构建并运行软件哈希后端 make -C tests/sys/psa_crypto_mac BOARDnative flash term # 或直接跑自动化测试 make -C tests/sys/psa_crypto_mac BOARDnative test # 指定硬件板将自动选用板载 HMAC 硬件加速后端 make -C tests/sys/psa_crypto_mac BOARDnrf52840dk flash term若 HMAC 计算失败程序会打印HMAC SHA256 failed: PSA 错误名与Tests failed...测试脚本因此无法匹配All Done而报失败——错误信息中的可读错误名可直接对应上述psa_mac_compute()各校验分支。受限于 Flash/RAM 容量并非所有板子都能运行本测试。Makefile.ci 声明了BOARD_INSUFFICIENT_MEMORY将arduino-duemilanove、arduino-leonardo、arduino-nano、arduino-uno、atmega328p、atmega328p-xplained-mini、atmega8、nucleo-l011k4等小内存 AVR/Cortex-M0 板排除在 CI 之外——这些板资源不足以承载 PSA Crypto 模块这也是配置测试必须同时验证的边界条件。进阶从测试到自定义配置本测试验证的是最小 MAC 配置若需要在实际应用中做更多扩展可参考其上游 examples/advanced/psa_crypto启用更多 MAC 算法在USEMODULE中追加psa_mac_hmac_sha_1、psa_mac_hmac_sha_384等每个算法同样支持_backend_periph/_backend_riot/_custom_backend三选一使用安全元件示例支持 Microchip ATECCX08A 设备通过SECURE_ELEMENT1/2启用并使用PSA_KEY_LOCATION_PRIMARY_SECURE_ELEMENT或PSA_KEY_LOCATION_SE_MIN与PSA_KEY_LOCATION_SE_MAX之间的自定义 location 值设备槽位配置结构key_type_allowed、key_persistent、slot_occupied定义于 cryptoauthlib 包中注意当前实现尚不支持使用设备上已预存的密钥通过 Kconfig 配置模块选择用 Make编译期配置如CONFIG_PSA_SINGLE_KEY_COUNT、CONFIG_PSA_PROTECTED_KEY_COUNT、CONFIG_PSA_ASYMMETRIC_KEYPAIR_COUNT则可用menuconfig进行slot 数量配置的宏定义与联动关系见 psa_crypto_slot_management.h。小结tests/sys/psa_crypto_mac虽是一个小型测试却是理解 RIOT PSA Crypto 模块化设计的最佳切片它同时验证了模块裁剪的正确性psa_cryptopsa_macpsa_mac_hmac_sha_256三个模块即可完成 HMAC 计算、后端自动选择机制periph_hmac_sha_256特性驱动 periph/riot 后端切换、密钥槽资源配置CONFIG_PSA_SINGLE_KEY_COUNT1的最小化、API 调用链psa_mac_compute→ 密钥槽加锁 → 算法分发 → 低层 wrapper以及自动化验证流程testrunner 断言All Done。阅读本文后你可以基于这份最小配置在自己的 RIOT 应用中快速搭建 PSA MAC 功能并根据目标硬件自由切换软件或硬件后端。赞分享物联网嵌入式操作系统实时系统【免费下载链接】RIOTRIOT - The friendly OS for IoT项目地址https://gitcode.com/GitHub_Trending/riot/RIOT点击查看免费下载相关推荐GetQzonehistoryQQ空间历史数据抓取架构深度解析与技术实现GetQzonehistoryQQ空间历史数据抓取架构深度解析与技术实现 在数字化记忆保存日益重要的今天GetQzonehistory作为一个专业的Pyth物联网嵌入式操作系统实时系统RIOT PSA Crypto Secure Element 测试指南在 ATECC608A 上验证 AES-128、HMAC-SHA256 与 ECDSA P256RIOT PSA Crypto Secure Element 测试指南在 ATECC608A 上验证 AES 128、HMAC SHA256 与 ECDSA物联网嵌入式操作系统实时系统FreeShow安全与隐私保护教堂数据管理的最佳实践与配置指南FreeShow安全与隐私保护教堂数据管理的最佳实践与配置指南 FreeShow作为一款免费开源的教堂演示软件在帮助教会高效管理礼拜内容的同时也非常重视数物联网嵌入式操作系统实时系统上一篇探索Chimee一款强大的开源视频播放器下一篇TencentDB Agent Memory批量操作工具高效管理大量记忆数据的技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

VLSI设计基础复习全攻略:核心考点、经典题型与备考避坑指南

VLSI设计基础复习全攻略:核心考点、经典题型与备考避坑指南

简介:这份VLSI设计基础复习资料面向微电子、集成电路及相关专业学生,适用于期末备考、考研复试和入职前知识梳理。内容以问答形式系统梳理CMOS工艺成为主流的原因、MOS器件与BJT的工作原理区别、硅栅工艺的优势、阈值电压影响因素、萨式方程、衬底偏置效…

2026/9/20 13:39:27 阅读更多 →
抖音批量下载器教程:3 步跑通创作者主页存档

抖音批量下载器教程:3 步跑通创作者主页存档

抖音批量下载器教程:3 步跑通创作者主页存档 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批…

2026/9/20 13:39:27 阅读更多 →
博世家电售后服务热线官宣,原厂服务守护家电使用

博世家电售后服务热线官宣,原厂服务守护家电使用

针对当下网络家电售后信息繁杂、虚假维修渠道泛滥等问题,为切实保障消费者合法权益,杜绝非正规维修带来的乱收费、劣质配件、过度维修等消费隐患,博世家电正式官宣全国统一官方售后服务渠道,为用户提供正规、专业、有保障的家电售…

2026/9/20 13:39:26 阅读更多 →

最新新闻

Rome useAltText 规则:强制图片等元素提供无障碍替代文本的完整指南

Rome useAltText 规则:强制图片等元素提供无障碍替代文本的完整指南

开发工具CLILint格式化静态分析代码质量构建工具 【免费下载链接】tools Unified developer tools for JavaScript, TypeScript, and the web 项目地址: https://gitcode.com/gh_mirrors/to/tools 点击查看 免费下载 本指南以 Rome 官方 lint 规则文档 useAltText …

2026/9/20 20:52:16 阅读更多 →
CANN ops-nn 算子 aclnnMaxPool3D 完整指南:两段式接口、三种 Padding 模式与 NPU 端到端调用实战

CANN ops-nn 算子 aclnnMaxPool3D 完整指南:两段式接口、三种 Padding 模式与 NPU 端到端调用实战

CANN ops-nn 算子 aclnnMaxPool3D 完整指南:两段式接口、三种 Padding 模式与 NPU 端到端调用实战 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 导读 …

2026/9/20 20:52:16 阅读更多 →
内存充足却卡死?从事件日志到硬件超频的系统排查指南

内存充足却卡死?从事件日志到硬件超频的系统排查指南

如果你的电脑配置了 64GB 内存,平时根本没跑到过半,结果最近两三周里莫名其妙卡死了 6 次——鼠标还能动,系统就是没反应,动两下直接黑屏或者屏幕定格,重启之后一切又正常,任务管理器里内存占用也不高&…

2026/9/20 20:52:16 阅读更多 →
项目投资管理流程图全解析:从初筛到退出的关键节点与实操要点

项目投资管理流程图全解析:从初筛到退出的关键节点与实操要点

简介:这是一份项目投资管理流程图PPT,面向企业战略规划人员、投资决策层及参与投资评估的财务、市场、运营管理者,用于梳理新项目立项前的规范管理路径。内容完整展示了从战略规划部提出项目投资目标与构想、决策层审核确认、跨部门组建评估小…

2026/9/20 20:52:16 阅读更多 →
设计质量保证体系:从设计规范到视觉还原的闭环实践

设计质量保证体系:从设计规范到视觉还原的闭环实践

简介:这份文件是《设计质量保证体系与方法.doc》,面向电力设计、工程技术服务及质量管理岗位人员,用于指导企业依据GB/T19001-2008/ISO9001:2008标准建立和运行设计质量保证体系。资源包共1个doc文档,大小36KB,内容完整…

2026/9/20 20:52:16 阅读更多 →
PDFMathTranslate(pdf2zh)PDF 中文翻译快速上手:两条命令跑通,公式与排版完整保留

PDFMathTranslate(pdf2zh)PDF 中文翻译快速上手:两条命令跑通,公式与排版完整保留

PDFMathTranslate(pdf2zh)PDF 中文翻译快速上手:两条命令跑通,公式与排版完整保留 【免费下载链接】PDFMathTranslate [EMNLP 2025 Demo] PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF…

2026/9/20 20:51:14 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →