-
Notifications
You must be signed in to change notification settings - Fork 62
Home
Sun Yimin edited this page Nov 15, 2024
·
36 revisions
中国国家密码管理局商用密码实现及优化系列。
总体而言,在AMD64架构下,SM2/3的性能已经和主流NIST P256 / SHA 256相差不大了(要是AMD64也实现了SHA指令扩展,那SM3/SHA256的性能差别就会显著扩大。注:crypto/sha256: add sha-ni implementation,NI实现预计将于golang 1.21发布。SHA extensions);而SM4,由于CPU指令级别的差距,AES具有无法比拟的性能优势。
不过,Intel CPU很快(大概2025年)也会支持SM3/SM4: Intel CPU supports SM3 SM4。
各算法架构优化表:
amd64 | arm64 | ppc64x(*1) | s390x | riscv64 | loong64(*3) | |
---|---|---|---|---|---|---|
SM2 | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ |
SM3 | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ |
SM4 | ✔ | ✔ | ✔ | ✘ | ✘ | ✘ |
SM9 | ✔ | ✔ | ✔ | ✘(*2) | ✘ | ✘ |
ZUC | ✔ | ✔ | ✔ | ✘ | ✘ | ✘ |
注1:ppc64x主要指ppc64le, 因为ppc64没有test/CI环境。
注2:s390x的SM9优化基于现实需求没有实现。
注3:loong64的test/CI环境还没有Ready,且loong64和riscv64类似,几乎没有CPU feature可以利用,SIMD/Vector(LSX/LASX)目前在Golang也不支持(从Golang 1.23.x开始,正在逐步支持)。