我是密码学领域的新手。我正在尝试使用 OpenSSL 检查各种算法的性能。
在互联网上我找到了这个命令:
openssl 速度 aes-128-cbc des md5
这给了我这个结果:
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 141163.54k 328300.37k 585034.84k 725997.91k 781058.05k 784356.69k
des cbc 87455.53k 88825.00k 90427.39k 90697.05k 89822.55k 89953.62k
des ede3 34051.47k 34361.83k 34424.58k 34591.40k 34493.78k 34635.78k
aes-128 cbc 274253.87k 296425.66k 298769.49k 304985.43k 301938.01k 302945.62k
所以问题是: 如果我想用特定的算法、特定的文件来测量时间...我该怎么做?
例如,我有一个picture.jpg
使用 AES-128 加密的文件。我想知道 PC 计算这个加密过程需要多少次。
答案1
对于特定尺寸,这可以通过-bytes size
简单地使用参数来实现:
$ openssl speed -bytes $(ls -l picture.jpg | cut -d " " -f5) aes-128-cbc des md5
Doing md5 for 3s on 1023 size blocks: 1736134 md5's in 2.99s
Doing des cbc for 3s on 1023 size blocks: 224215 des cbc's in 3.00s
Doing des ede3 for 3s on 1023 size blocks: 84333 des ede3's in 3.00s
Doing aes-128 cbc for 3s on 1023 size blocks: 438308 aes-128 cbc's in 3.00s
...
但是,如果您想了解每个操作所需的时间,则需要进行计算:aes-128 cbc 在 3.00 秒内执行了 438308 次,因此每个操作花费 0.0068445 毫秒或 6844.5 纳秒。
对于特定文件如果不编写使用 openssl 的包装器,则无法直接实现这一点。但可以看看speed.c 源代码如果你确实需要的话,可以稍微调整一下。或者只需重写一个小程序即可。