如何解释openssl速度输出?

maz*_*zix 6 openssl

我跑openssl speed了我的Ubuntu电脑.一些结果:

Doing md4 for 3s on 16 size blocks: 9063888 md4's in 3.00s
Doing md4 for 3s on 64 size blocks: 7105157 md4's in 3.00s
Doing md4 for 3s on 256 size blocks: 4507884 md4's in 3.00s
Doing md4 for 3s on 1024 size blocks: 1809773 md4's in 2.99s
Doing md4 for 3s on 8192 size blocks: 275679 md4's in 3.00s
Run Code Online (Sandbox Code Playgroud)

这些数字究竟是什么意思?

  1. '做md4 for 3s'是什么意思?这是否意味着整个测试进行3次/秒?
  2. '2.99'中的'1809773 md4'是什么意思?
  3. '8192尺寸块'是什么意思?
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md4              47363.12k   151534.29k   382055.94k   615801.51k   747692.03k
Run Code Online (Sandbox Code Playgroud)

以上,最后一行openssl speed md4输出 - 它们究竟是什么意思?

twa*_*erg 10

虽然它可能措辞得更好,但它几乎意味着它所说的 - md4用一个16字节的输入在循环中运行哈希例程3秒.3秒后,观察我们只运行了900多万次迭代.这是大约1.44亿字节处理,或每秒4800万字节(其中"百万"意味着10 ^ 6).

  • 对于大多数散列和密码算法,吞吐量(每秒可以散列/加密多少字节)取决于您用作输入的块大小 - 换句话说,散列数据一次8KB(在您的示例中为747MB/s)比一次散列16个字节更快(仅为47MB/s).这就是`openssl speed`所做的,运行每个算法一段时间,具有不同的块大小,以向您展示如果您以某种方式使用它可以获得的吞吐量...... (2认同)
  • `strlen(buf)`只计算缓冲区中的第一个NULL字节(假设有一个 - 如果没有,你可能正在读取越界),但是如果你的意图是哈希一个以NULL结尾的字符串,这将在一次通过中处理整个字符串... (2认同)