CANN Crypto 快速上手:5 分钟跑通昇腾 NPU 上的第一个密码算子 CANN Crypto 快速上手5 分钟跑通昇腾 NPU 上的第一个密码算子【免费下载链接】cryptocrypto SIG 是密码学兴趣小组围绕昇腾 NPU 打造高性能密码软件库提供丰富的密码算子与算法实现项目地址: https://gitcode.com/cann/cryptoCANN Cryptocann/crypto是 CANN 中面向密码计算的算子与算法库围绕昇腾 NPU 提供国密SM2、SM3、SM4与国际主流算法AES、SHA-2/3、X25519、ML-KEM 等的高性能实现。本文是一份面向新手的 CANN Crypto 快速上手指南只需 5 个步骤你就能在昇腾 NPU 上编译并运行自己的第一个密码算子并学会验证结果是否正确。一、为什么密码计算要跑在昇腾 NPU 上CPU 做密码计算已经足够快但 CANN Crypto 解决的是 CPU 难以覆盖的两类场景设备驻留数据就地保护数据已经放在 NPU 显存里不必拷回主机加密再拷回去减少一次昂贵的数据搬运批量密码计算卸载大批量消息如海量文件指纹、批量哈希放到 NPU 并行执行吞吐量更高。项目按「数学引擎 → 密码原语 → 算法服务」三层组织下层能力可被多个算法族复用例如 SHAKE 算子就复用了 Keccak-f[1600] 原语。架构细节可参考 src 目录说明。二、环境准备安装 NPU 驱动与 CANN 软件包跑通密码算子前先确认两件事机器上已有昇腾 NPU 设备并安装了配套的 NPU 驱动已安装 CANN 软件包CANN 版本需与源码标签配套设备验证基线为 CANN 9.1.0。 没有本地设备可以使用社区提供的 CANNLab 在线环境其中已预置配套 CANN 环境开箱即用。部分组件如 AES PyTorch 扩展还依赖torch与torch_npu具体依赖以各组件的requirements.txt为准例如 src/primitives/AES/requirements.txt。三、下载 CANN Crypto 源码执行以下命令克隆仓库${tag_version}换成与你 CANN 版本配套的标签git clone -b ${tag_version} https://gitcode.com/cann/crypto.git说明若环境中已有配套分支源码可跳过本步骤。版本对应关系见仓库根目录 README.md 的「版本配套」章节。四、编译第一个密码算子一行命令搞定仓库根目录的 build.sh 是统一的构建入口组件通过src下的二级目录自动发现无需手动修改构建脚本。编译全部组件bash build.sh --pkg只编译指定组件推荐新手起步以 AES 原语为例bash build.sh --componentsprimitives/AES --pkg编译完成后再跑单元测试确认环境正常bash build.sh -u --opkernel # op_kernel 层需要昇腾设备分层测试策略--ophost、--opapi层不需要设备--opkernel层才需要 NPU新手可按此顺序逐层验证。五、运行示例让 NPU 算出第一个密码结果方式 APython 调用 AES-128-CTR最直观AES 组件提供了 PyTorch 算子扩展安装后直接运行样例cd src/primitives/AES/examples python3 aes128_ctr_example.py样例 aes128_ctr_example.py 会在 NPU 上对 RFC 3686 标准测试向量做加密并自动比对密文。看到输出AES-128-CTR example: PASS就说明你的昇腾 NPU 已成功完成第一个密码算子方式 BC 调用 SHAKE128 哈希算子如果偏好 C 接口SHAKE 算子提供了一个完整的 aclnn 调用样例 test_aclnn_shake_tensor.cpp它演示了标准两步调用流程aclnnShake128TensorGetWorkspaceSize—— 查询工作空间大小、生成执行器aclnnShake128Tensor—— 把计算提交到指定流同步后读取结果。接口参数与约束的完整说明见 aclnnShake128Tensor.md。运行样例输出SHAKE128 example: PASS即表示成功。六、结果不对或编译失败常见排查点现象可能原因与对策编译报设备架构错误确认编译目标与芯片匹配Atlas A2 为ascend910bAtlas A3 为ascend910_93参考 src/primitives/keccak/README.md样例输出 FAIL / mismatch检查 CANN 版本与源码标签是否配套优先用标签而非 master 分支接口返回非零按文档停止后续调用结合aclGetRecentErrMsg()与 CANN 日志定位见 aclnnShake128Tensor.md 返回码表七、继续探索项目关键模块路径跑通第一个算子后推荐按以下路径深入算法样例examples/ —— 每个算法族一个最小可运行样例只依赖公开接口密码原语src/primitives/ —— AES、SM4、Keccak-f 等基础原语参考实现reference/ —— 零 CANN 依赖的纯 C 实现作为正确性基准辅助脚本scripts/ —— 测试向量获取、依赖检查等接口文档各算子目录下docs/均有参数、约束与调用示例如 aclnnKeccakF1600Tensor.md参与贡献先阅读 CONTRIBUTING.md 了解交付件要求与评审规则。⏱️ 回顾一下完整路径环境检查 → clone 源码 →build.sh --pkg编译 → 运行 AES/SHAKE 样例 → 看到 PASS。整个过程约 5 分钟你已在昇腾 NPU 上完成了第一个密码算子。祝探索愉快【免费下载链接】cryptocrypto SIG 是密码学兴趣小组围绕昇腾 NPU 打造高性能密码软件库提供丰富的密码算子与算法实现项目地址: https://gitcode.com/cann/crypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考