我正在计算在运行linux的Core2Duo系统中使用AES的C实现(也存在汇编实现)执行AES加密/解密(简单AES ECB模式)所花费的时间。
我尝试过rdtsc和clock_gettime。
pseudo code for time calculation
//using rdtsc
start=rdtsc_timer_start();
AES_en[de]crypt
end=rdtsc_timer_end();
Time_taken=end-start
//using clock_gettime
clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&start);
AES_en[de]crypt for 100 blocks
clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&end);
Time_taken=(end.tv_sec-start.tv_sec)*1000000000+ (end.tv_nsec-start.tv_nsec);
令我惊讶的是,我得到的加密时间比解密时间小得多。
使用Core2Duo系统(2.2GHz)中的rdtsc,使用clock_gettime, 61636ticksAES加密时间 26231nsec 。
AES解密时间 43243nsec 在Core2Duo系统(2.2GHz)中使用rdtsc使用clock_gettime, 118196ticks 。
我的经历恰好与此帖encryption time greater than decryption time相反,但与此帖why encryption is faster than decryption相似。
编辑1: 我制作了一个bash脚本来运行上述AES加密/解密100000次 所以基本上我正在计算对100个数据块进行100次加密/解密的时间,然后计算那个时间的中位数。