新闻详情

新闻详情

首页 / 资讯中心 / 详情

昇腾 CANN Crypto 部署指南:从零搭建 NPU 密码库环境的完整清单

发布时间:2026/9/30 16:17:43来源:尧图网络
昇腾 CANN Crypto 部署指南:从零搭建 NPU 密码库环境的完整清单
昇腾 CANN Crypto 部署指南从零搭建 NPU 密码库环境的完整清单【免费下载链接】cryptocrypto SIG 是密码学兴趣小组围绕昇腾 NPU 打造高性能密码软件库提供丰富的密码算子与算法实现项目地址: https://gitcode.com/cann/cryptoCANN Cryptocann/crypto是面向昇腾 NPU 的高性能密码学算子与算法库覆盖国密算法SM2、SM3、SM4、ZUC与国际主流算法AES、SHA-3、ChaCha20、ML-KEM、ML-DSA让数据无需回到主机即可在 NPU 上完成加密保护。本文将带你按 4 步完成CANN Crypto 部署环境准备 → 源码下载 → 编译构建 → 测试自检并附完整检查清单与常见问题排查帮助新手快速搭建可用的NPU 密码库开发环境。 部署总览4 步完成清单步骤操作内容关键命令 / 工具是否需要 NPU 卡1️⃣安装 NPU 驱动与 CANN 包npu-smi info是2️⃣下载 CANN Crypto 源码git clone否3️⃣配置环境并一键编译bash build.sh --pkg部分需要4️⃣分层单元测试自检bash build.sh -u按层而定快速上手提示即使暂时没有 NPU 卡也可以完成 Host 侧编译与op_host/op_api层测试先跑通流程再上卡验证。第 1 步环境准备安装 NPU 驱动与 CANN 包CANN Crypto 的源码跟随CANN 软件版本发布因此部署的第一步就是确认你的 NPU 驱动与 CANN 包已正确安装。操作清单安装与你的昇腾硬件匹配的 NPU 驱动Atlas A2 / Atlas A3 系列。安装 CANN 工具包CANN Toolkit Kernels。验证设备状态# 查看 NPU 设备信息与驱动版本 npu-smi info能看到至少一张 NPU 卡且驱动版本正常即可进入下一步。两个重要提醒⚠️版本配套本项目源码跟随 CANN 软件版本发布请选择配套的 CANN 版本与对应 GitCode 标签源码直接使用 master 分支可能存在版本不匹配的风险。不想本地装环境可以改用社区提供的CANNLab 在线环境其中已预置配套的 CANN 环境开箱即用适合新手快速体验。第 2 步源码下载克隆 CANN Crypto 仓库在代码工作目录下执行# 推荐指定与 CANN 版本配套的标签 git clone -b ${tag_version} https://gitcode.com/cann/crypto.git # 或使用默认分支 git clone https://gitcode.com/cann/crypto.git说明若你的环境中已存在配套分支的源码例如 CANNLab 在线环境已预置可跳过本步骤。克隆完成后建议通读一下 README.md 中的目录结构说明理解 src/ 下三层组织方式数学引擎math→ 密码原语primitives→ 算法服务algorithms下层能力可被多个算法族复用。第 3 步配置 CANN 路径并一键编译密码库3.1 加载 CANN 环境变量CANN 工具包安装后会提供环境配置脚本先source加载再确认关键变量# 加载 CANN 环境路径以实际安装位置为准常见如 source /usr/local/Ascend/cann/set_env.sh # 或 source /home/user/Ascend/cann/bin/setenv.bash # 关键环境变量 echo $ASCEND_HOME_PATH # CANN 安装路径设置后才会构建设备算子包 echo $ASCEND_COMPUTE_UNIT # 设备编译目标默认 ascend910bAtlas A2Atlas A3 取 ascend910_93环境变量作用典型取值ASCEND_HOME_PATHCANN 安装路径已设置时构建设备算子包并可运行设备用例/usr/local/Ascend/cannASCEND_COMPUTE_UNIT设备编译目标芯片ascend910b/ascend910_93无卡也能编译未设置ASCEND_HOME_PATH时构建脚本会自动退化为仅构建 Host 侧方便无卡环境开发自检——这正是 build.sh 内置的双模式设计。3.2 使用 build.sh 一键编译全部组件仓库根目录的 build.sh 是统一的构建与测试入口组件由src/下的二级目录自动发现新增组件无需修改构建脚本# 编译全部组件 bash build.sh --pkg # 只编译指定组件逗号分隔多个 bash build.sh --componentsprimitives/AES --pkg # 指定编译并发数默认为 CPU 核数 bash build.sh --pkg -j8不同组件的构建方式会自动适配无需你手动切换工具链组件类型代表组件构建方式Python 扩展类primitives/AES先按 requirements.txt 安装依赖再构建 wheel 并安装CANN 算子框架类primitives/keccak、algorithms/hash/shakeCMake 构建有 CANN 环境时同时构建设备算子包CMake 纯库类math/nttCMake 常规构建例如 AES 组件除build.sh外也可用其自带的 build_and_test.sh 完成装依赖 → 编译 → 跑测试一条龙。第 4 步分层单元测试自检验证环境是否真正可用编译成功后用分层单元测试验证环境。-u选项按层次筛选用例各层次对硬件的要求不同bash build.sh -u --ophost # op_host 层无需昇腾设备 bash build.sh -u --opapi # op_api 层无需昇腾设备 bash build.sh -u --opkernel # op_kernel 层需要昇腾设备与 CANN 环境 bash build.sh -u # 运行全部层次自检判据✅ 输出全部通过共 N 组即该层次环境 OK⚠️op_kernel层未设置ASCEND_HOME_PATH时会跳过设备用例——跳过不等于通过请确认是在有卡机器上运行⚠️ 部分用例依赖pycryptodome等第三方库缺失时会被 skip可参考 CI 冒烟脚本 scripts/ci/smoke.sh 的做法出现 skipped 即视为环境不完整。 想完整复现官方验证流程可直接参考 CI 三个脚本编译 scripts/ci/compile.sh、单测 scripts/ci/ut.sh、NPU 冒烟 scripts/ci/smoke.sh它们分别执行build.sh --pkg、build.sh -u --opkernel并加载 CANN 环境。第一次跑通用 AES-128-CTR 示例验证 NPU 加密环境就绪后推荐用 AES 组件的示例做一次端到端验证把 RFC 3686 标准测试向量放到 NPU 上加密并比对结果看到PASS即代表你的 NPU 密码库链路完全打通。cd src/primitives/AES python3 examples/aes128_ctr_example.py # 可选参数设备号该示例位于 aes128_ctr_example.pyGCM 模式另有 aes128_gcm_example.py 可玩。更多算法如 Keccak-f[1600]、SHAKE的算子文档见 docs/aclnnKeccakF1600Tensor.md 与 aclnnShakeTensor.md。 部署后目录结构速查部署完成后建议对照下表熟悉各目录职责方便后续开发找对位置路径职责include/cann_crypto/对外稳定 C ABI唯一承诺兼容性的接口边界src/api/C ABI 实现边界校验、句柄与 plan 生命周期、算法分发src/core/运行时handle / stream / workspace / 密钥管理src/math/数学引擎大数模运算、NTT/RNS、GF(2^k)src/primitives/密码原语AES、SM4、Keccak-f、ChaCha、GHASH 等src/algorithms/算法服务digest / aead / mac / kdf / signature / kemreference/纯 C 参考实现差分测试的正确性基准tests/ut/仓库级用例按 common / op_api / op_host / op_kernel 划分scripts/ci/门禁流水线脚本编译、UT、NPU 冒烟❓ 常见问题 FAQQ1没有 NPU 卡能部署 CANN Crypto 吗可以。未设置ASCEND_HOME_PATH时bash build.sh --pkg仅构建 Host 侧--ophost、--opapi层测试同样无需设备适合先在普通开发机跑通流程。Q2编译报找不到 CANN 工具链先确认已sourceCANN 环境脚本且echo $ASCEND_HOME_PATH指向有效的 CANN 安装路径设备算子包构建依赖该变量CI 中通过加载setenv.bash解决见 scripts/ci/compile.sh。Q3测试通过了但日志里有 skipped说明有用例因 NPU 不可用或缺少依赖如pycryptodome被跳过。官方 NPU 冒烟门禁的策略是出现 skipped 即判失败见 scripts/ci/smoke.sh建议按此标准自查。Q4Atlas A3910_93如何指定编译目标设置ASCEND_COMPUTE_UNITascend910_93后再执行构建默认值为ascend910b。Q5想贡献代码前还要看什么阅读 CONTRIBUTING.md 了解贡献流程与代码放置层次并留意 SECURITY.md 中的安全问题反馈渠道。 相关文件速查文件用途README.md项目总览概述、版本配套、目录结构build.sh构建与测试统一入口scripts/ci/compile.shCI 编译流程参考scripts/ci/smoke.shCI NPU 冒烟流程参考src/primitives/AES/requirements.txtAES 组件 Python 依赖清单src/primitives/AES/build_and_test.shAES 组件一键构建测试脚本docs/README.md文档中心索引按这份清单走完 4 步你就拥有了一个可编译、可测试、可验证的昇腾 NPU 密码库环境——下一步就可以从 examples/ 开始把国密与后量子算法跑上 NPU 了 【免费下载链接】cryptocrypto SIG 是密码学兴趣小组围绕昇腾 NPU 打造高性能密码软件库提供丰富的密码算子与算法实现项目地址: https://gitcode.com/cann/crypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

电商大促实时集成:高吞吐业务下,实时数据同步的工程取舍 2026/9/30 17:18:31

电商大促实时集成:高吞吐业务下,实时数据同步的工程取舍

业务场景描述电商大促是对实时数据集成链路的极限压力测试。日常交易流量平稳,而大促活动期间,订单、支付、退款、优惠券核销、库存扣减等业务数据会在短时间内出现数十倍流量暴涨。业务侧需要实时数据支撑大屏交易看板、库存实时监控、营销风控、用户行…

阅读更多 →
第030篇 HashMap 扩容与 rehash——为什么容量是 2 的幂 2026/9/30 17:18:24

第030篇 HashMap 扩容与 rehash——为什么容量是 2 的幂

摘要:本篇是《Android软件开发面试从入门到精通》第 30 篇,主题为「HashMap 扩容与 rehash——为什么容量是 2 的幂」。这一篇我们把「HashMap 扩容与 rehash——为什么容量是 2 的幂」一次讲透:先立概念,再拆机制,最后落到工程与面试表达,一条线不绕弯。 关键词:Androi…

阅读更多 →
切换下载模式后仍按原方式传输,先检查哪一步 2026/9/30 17:16:56

切换下载模式后仍按原方式传输,先检查哪一步

在 vDisk 管理台把默认下载模式从链式改成 BT,或从 BT 改回链式后,如果终端仍按原来的方式传输,需要把服务端配置和终端侧的探测结果分开看。下面按操作顺序说明判断依据和处理方法。前提与入口模式配置在管理台的“数据服务 → 下载设置 → …

阅读更多 →
Lap卸载与数据清理指南:彻底移除数据库、缓存与配置 2026/9/30 17:16:56

Lap卸载与数据清理指南:彻底移除数据库、缓存与配置

Lap卸载与数据清理指南:彻底移除数据库、缓存与配置 【免费下载链接】lap An offline-first photo manager for large local libraries 项目地址: https://gitcode.com/GitHub_Trending/lap3/lap Lap 是一款隐私优先的本地照片管理器(offline-fir…

阅读更多 →
6个电脑数据恢复方法汇总,装入口袋益处多! 2026/9/30 17:16:09

6个电脑数据恢复方法汇总,装入口袋益处多!

在数字化时代,电脑成为我们存储重要数据的核心工具,从工作文档、珍贵照片到重要视频,每一份数据都承载着我们的心血与回忆。然而,意外总是不期而至,误删除、硬盘损坏、系统崩溃等问题,都可能导致数据丢失&a…

阅读更多 →
素材用过几次怎么追踪?本地使用计数与状态流转的实现思路 2026/9/30 17:15:49

素材用过几次怎么追踪?本地使用计数与状态流转的实现思路

素材用过几次怎么追踪?本地使用计数与状态流转的实现思路先说一个我自己遇到的事。上个月翻素材库找一个半月前下过的空镜,翻到第三页突然发现——这条素材我好像在两条片子里都用过,但当时完全没印象。更麻烦的是,另一条结构很像…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉