Updated SM4性能优化 (markdown)

Sun Yimin 2021-03-16 08:58:43 +08:00
parent 4a54e1087a
commit c4b16020c8

@ -9,4 +9,26 @@
Go语言的对称加密实现分离了加密模式和Block级别的加密同时支持特定加密算法实现自己的优化版本。所以我们只实现了SM4的单Block的加解密Block接口就能使用CBC/CFB/OFB/CTR/GCM加密模式。
关于SM4的优化实现细粒度的并行可能性不大大粒度的优化实现可以参考sm4ni可多Blocks并行加解密的模式还是比较多的。
关于SM4的优化实现细粒度的并行可能性不大大粒度的优化实现可以参考sm4ni可多Blocks并行加解密的模式还是比较多的。
# 未优化之前
goos: windows
goarch: amd64
pkg: github.com/emmansun/gmsm/sm4
BenchmarkSM4CBCEncrypt1K-6 42994 27766 ns/op 36.88 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CBCDecrypt1K-6 42690 28103 ns/op 36.44 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CFBEncrypt1K-6 42945 27759 ns/op 36.71 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CFBDecrypt1K-6 42820 28493 ns/op 35.76 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CFBDecrypt8K-6 5338 227642 ns/op 35.96 MB/s 0 B/op 0 allocs/op
BenchmarkSM4OFB1K-6 43754 27443 ns/op 37.13 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CTR1K-6 43292 27392 ns/op 37.20 MB/s 0 B/op 0 allocs/op
BenchmarkSM4CTR8K-6 5338 220872 ns/op 37.07 MB/s 0 B/op 0 allocs/op
BenchmarkSM4GCMSeal1K-6 37594 31777 ns/op 32.22 MB/s 48 B/op 3 allocs/op
BenchmarkSM4GCMOpen1K-6 37029 31919 ns/op 32.08 MB/s 48 B/op 3 allocs/op
BenchmarkSM4GCMSign1K-6 315050 3882 ns/op 263.81 MB/s 48 B/op 3 allocs/op
BenchmarkSM4GCMSign8K-6 43905 26876 ns/op 304.81 MB/s 48 B/op 3 allocs/op
BenchmarkSM4GCMSeal8K-6 4917 250707 ns/op 32.68 MB/s 49 B/op 3 allocs/op
BenchmarkSM4GCMOpen8K-6 4722 248856 ns/op 32.92 MB/s 48 B/op 3 allocs/op
PASS
ok github.com/emmansun/gmsm/sm4 20.818s