openssl speed和openssl rand
1.1 openssl speed
测试加密算法的性能。
支持的算法有:
openssl speed [md2] [mdc2] [md5] [hmac] [sha1] [rmd160] [idea-cbc] [rc2-cbc] [rc5-cbc] [bf-cbc] [des-cbc] [des-ede3] [rc4] [rsa512] [rsa1024] [rsa2048] [rsa4096] [dsa512] [dsa1024] [dsa2048] [idea] [rc2] [des] [rsa] [blowfish]
不过为什么没有base64算法呢?
测试速度好几秒一个指标,很慢。如果不指定参数将测试所有支持的算法,所以会花很久时间,我的虚拟机上花了十多分钟才测试完所有的算法性能。
例如测试下,dsa512、rsa512和rsa2048加密速度如何。
[root@docker-01 ~]# openssl speed dsa512 rsa512 rsa2048 Doing 512 bit private rsa's for 10s: 149035 512 bit private RSA's in 9.94s Doing 512 bit public rsa's for 10s: 2109264 512 bit public RSA's in 9.96s Doing 2048 bit private rsa's for 10s: 6947 2048 bit private RSA's in 9.95s Doing 2048 bit public rsa's for 10s: 238143 2048 bit public RSA's in 9.95s Doing 512 bit sign dsa's for 10s: 143019 512 bit DSA signs in 9.95s Doing 512 bit verify dsa's for 10s: 172967 512 bit DSA verify in 9.95s OpenSSL 1.0.2k-fips 26 Jan 2017 built on: reproducible build, date unspecified options:bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM sign verify sign/s verify/s rsa 512 bits 0.000067s 0.000005s 14993.5 211773.5 rsa 2048 bits 0.001432s 0.000042s 698.2 23934.0 sign verify sign/s verify/s dsa 512 bits 0.000070s 0.000058s 14373.8 17383.6
在10秒时间内,rsa512的私钥处理149035单位,而rsa2048仅处理6947单位,慢了20多倍。
再看签名性能,dsa算法只支持签名不支持加密,而rsa支持加密也支持签名。从上面的结果中可以看到rsa512的签名速度为每秒14993.5,而dsa512的速度为14373.8,速度相差不大。
1.2 openssl rand
生成伪随机数。
openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num 选项说明: -out:指定随机数输出文件,否则输出到标准输出。 -rand file:指定随机数种子文件。种子文件中的字符越随机,openssl rand生成随机数的速度越快,随机度越高。 -base64:指定生成的随机数的编码格式为base64。 -hex:指定生成的随机数的编码格式为hex。 num:指定随机数的长度。
示例:
[root@docker-01 ~]# openssl rand -base64 30;openssl rand -hex 30;openssl rand 30
H5KANelzvHZj7F/nN2130q9iAPQpKJInQ45A7B3g
5f9fab4adfedc31a2834bc8d83319dce9973b57b51a9a99a37306644b2ac
可以看到,不指定-base64或-hex时生成的随机数是乱码随机数(其实是2进制),且没有\n符号。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?