下面是沒開啓AES-NI的情況,8KB塊加密性能 275677KB/s
F:\3rdpart\openssl-OpenSSL_1_1_1c\apps>openssl speed -evp AES256
Doing aes-256-cbc for 3s on 16 size blocks: 20588056 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 5782150 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 1514163 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 816554 aes-256-cbc's in 2.98s
Doing aes-256-cbc for 3s on 8192 size blocks: 100134 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 16384 size blocks: 50478 aes-256-cbc's in 3.00s
OpenSSL 1.1.1c 28 May 2019
built on: Fri Mar 20 02:05:45 2020 UTC
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cl /Zi /Fdossl_static.pdb /MT /Zl /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /WX -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 109802.97k 123352.53k 129208.58k 280176.35k 273432.58k 275677.18k
下面是開啓了AES-NI指令集之後,8KB塊加密性能增加到了 1223587KB/s,是原來的4.4倍,而256B塊加密性能是原來的9倍。
F:\3rdpart\openssl-OpenSSL_1_1_1c\apps>openssl speed -evp AES256
Doing aes-256-cbc for 3s on 16 size blocks: 146023514 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 50123679 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 13722555 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 3471554 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 448091 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 16384 size blocks: 221037 aes-256-cbc's in 3.00s
OpenSSL 1.1.1c 28 May 2019
built on: Wed Apr 1 07:05:12 2020 UTC
options:bn(64,32) rc4(8x,mmx) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cl /Zi /Fdossl_static.pdb /MT /Zl /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /WX -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 778792.07k 1069305.15k 1170991.36k 1184957.10k 1223587.16k 1207156.74k
關閉AES-NI的方法是,加了386表示這是一個386兼容的處理器,也就禁用了386之後的所有指令集。
perl Configure VC-WIN32 no-shared 386
啓用AES-NI的方法是,openssl會執行cpuid查詢cpu支持的指令集,並動態啓用。
perl Configure VC-WIN32 no-shared
測試機CPU爲i7 9700