Updated SM4性能优化 (markdown)

Sun Yimin 2021-03-31 11:54:37 +08:00
parent 3ef0ed30f0
commit 7b783498b6

@ -94,6 +94,24 @@ asm部分改造自aes的实现优化结果很惊人
# CCM及CMAC
CMAC使用CBC模式加密来生成MAC基于CBC模式的串行化特点以及block加密的性能其性能必定没有GCM模式好。这里有个相关的讨论[proposal: crypto/tls: add support for AES-CCM #27484](https://github.com/golang/go/issues/27484)
CPU: i5-9500
goos: windows
goarch: amd64
BenchmarkAESCCMSign1K-6 1000000 1242 ns/op 824.78 MB/s 656 B/op 6 allocs/op
BenchmarkSM4CCMSign1K-6 81297 14768 ns/op 69.34 MB/s 688 B/op 6 allocs/op
BenchmarkAESCCMSeal1K-6 522488 2362 ns/op 433.44 MB/s 656 B/op 6 allocs/op
BenchmarkSM4CCMSeal1K-6 61077 19103 ns/op 53.61 MB/s 688 B/op 6 allocs/op
BenchmarkAESCCMOpen1K-6 546088 2330 ns/op 439.54 MB/s 656 B/op 6 allocs/op
BenchmarkSM4CCMOpen1K-6 64393 19265 ns/op 53.15 MB/s 688 B/op 6 allocs/op
BenchmarkAESCCMSign8K-6 160434 7566 ns/op 1082.71 MB/s 656 B/op 6 allocs/op
BenchmarkSM4CCMSign8K-6 10000 114325 ns/op 71.66 MB/s 688 B/op 6 allocs/op
BenchmarkAESCCMSeal8K-6 74269 15840 ns/op 517.17 MB/s 656 B/op 6 allocs/op
BenchmarkSM4CCMSeal8K-6 8020 143910 ns/op 56.92 MB/s 689 B/op 6 allocs/op
BenchmarkAESCCMOpen8K-6 77215 15650 ns/op 523.44 MB/s 656 B/op 6 allocs/op
BenchmarkSM4CCMOpen8K-6 8575 143358 ns/op 57.14 MB/s 688 B/op 6 allocs/op
可以看到AMD64下sm4-ccm的性能大概是sm4-gcm的1/5。
# CFB和OFB
Golang没提供这两种模式的优化接口可能这两种模式不怎么推荐使用了况且也就CFB解密可以并行。