加密是互联网数据安全的保证,但是现在感觉多数网页游戏和手游都已经抛弃了数据加密,几乎都是直接明文发送。不过现在游戏烂大街,除非很牛的游戏才会有人去破解,垃圾游戏我想没有那个蛋疼的会去破解。本着学习的精神下载了crypto++ 对常用的对称加密算法进行性能比较,由于游戏数据包都比较小,所以测试中选择的最大数据长度为200k,我想如果一个游戏数据包超过200k那只能是加载资源的时候了,其他时候没有人受的了长时间的转菊花。曾经在项目中有一次因为特殊原因弄了一个100k的数据包直接客户端超时。下面的测试中应用了vs2102的debug和release,gcc4.8+O2优化,clang3.5 +O2优化。加密算法后面带_EX表示从crypto++中或者在网上搜索的加密算法进行自己封装的函数的性能测试,这样可以减少函数调用,也利于以后在项目中使用,不用承受庞大的代码库,模板等其他开销。所有测试都是进行100次加密后计算的平均值,时间单位为微妙,如果为0表示平均之后时间不到1微妙,AES加密是应用了AES-NI指令,AES_EX测试的时间是应用了AES-NI指令的四路并行加密,具体算法可以看crypto++实现。所有加密都使用ECB模式(没有进行异或处理)。测试机子就是一台普通笔记本,gcc和clang测试在ubuntu13.4虚拟机上进行测试的。
测试结果如下: