From f146df6f5766b1b3cd1332dd0906c574ca241415 Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Mon, 22 Mar 2021 17:12:29 +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 | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/SM4性能优化.md b/SM4性能优化.md index 86f4cd7..910f314 100644 --- a/SM4性能优化.md +++ b/SM4性能优化.md @@ -165,3 +165,37 @@ Golang没提供这两种模式的优化接口,可能这两种模式不怎么 BenchmarkSM4GCMSeal8K-6 36162 33197 ns/op 246.77 MB/s 0 B/op 0 allocs/op BenchmarkAESGCMOpen8K-6 944479 1325 ns/op 6183.50 MB/s 0 B/op 0 allocs/op BenchmarkSM4GCMOpen8K-6 36162 33197 ns/op 246.77 MB/s 0 B/op 0 allocs/op + +AES 128的加密代码(amd64), 没有32轮loop,这种性能差别也不奇怪 + + // func encryptBlockAsm(nr int, xk *uint32, dst, src *byte) + TEXT ·encryptBlockAsm(SB),NOSPLIT,$0 + MOVQ xk+8(FP), AX + MOVQ dst+16(FP), DX + MOVQ src+24(FP), BX + MOVUPS 0(AX), X1 + MOVUPS 0(BX), X0 + ADDQ $16, AX + PXOR X1, X0 + MOVUPS 0(AX), X1 + AESENC X1, X0 + MOVUPS 16(AX), X1 + AESENC X1, X0 + MOVUPS 32(AX), X1 + AESENC X1, X0 + MOVUPS 48(AX), X1 + AESENC X1, X0 + MOVUPS 64(AX), X1 + AESENC X1, X0 + MOVUPS 80(AX), X1 + AESENC X1, X0 + MOVUPS 96(AX), X1 + AESENC X1, X0 + MOVUPS 112(AX), X1 + AESENC X1, X0 + MOVUPS 128(AX), X1 + AESENC X1, X0 + MOVUPS 144(AX), X1 + AESENCLAST X1, X0 + MOVUPS X0, 0(DX) + RET \ No newline at end of file