From 7b783498b6599c3f9042ef09702ba908e1bb2c3f Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Wed, 31 Mar 2021 11:54:37 +0800 Subject: [PATCH] =?UTF-8?q?Updated=20SM4=E6=80=A7=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20(markdown)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SM4性能优化.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/SM4性能优化.md b/SM4性能优化.md index f21f452..1067358 100644 --- a/SM4性能优化.md +++ b/SM4性能优化.md @@ -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解密可以并行。