从理论上讲,我想知道在下列条件下AES / CBC解密与AES / CBC加密相比要慢多少:
> 32字节(256位)的加密密钥;
> 16字节(128位)的块大小.
我问的原因是我想知道我所拥有的实现的解密速度是否异常缓慢.我已经对不同大小的随机内存块做了一些测试.结果如下:
64B:
64KB:
10MB – 520MB:
所有数据都存储在我系统的内部存储器中.应用程序生成要自行加密的数据.在测试PC上禁用虚拟内存,这样就不会有任何I / O调用.
在分析表时,加密和解密之间的区别是否意味着我的实现异常缓慢?我做错了什么吗?
更新:
>此测试在另一台PC上执行;
>该测试使用随机数据执行;
> Crypto用于AES / CBC加密和解密.
解密实现如下:
CryptoPP::AES::Decryption aesDecryption(aesKey, ENCRYPTION_KEY_SIZE_AES);
CryptoPP::CBC_Mode_ExternalCipher::Decryption cbcDecryption(aesDecryption, aesIv);
CryptoPP::ArraySink * decSink = new CryptoPP::ArraySink(data, dataSizeMax);
CryptoPP::StreamTransformationFilter stfDecryptor(cbcDecryption, decSink);
stfDecryptor.Put(reinterpret_cast(ciphertext), cipherSize);
stfDecryptor.MessageEnd();
*dataOutputSize = decSink->TotalPutLength();
更新2:
>添加了64字节块的结果