当执行恰好是AES加密的代码时,JVM本身不会利用CPU的特殊功能:将某些代码识别为AES的实现超出了JIT编译器的能力。要使用特殊的硬件(例如,VIA处理器上的“挂锁”或较新的Intel处理器上的AES-
NI指令),您有时必须使用“本机代码”。
JCE提供者可能会为您做到这一点。我不知道有任何现成的JCE提供程序,其中包括针对AES的优化本机代码(有一个名为Apache
JuiCE的项目,但它似乎已经停滞了,我不知道它的状态)。但是可以想象,SunJCE会在将来的版本中做到这一点(但是,由于Oracle购买了Sun,并且OpenJDK
7的功能过于强大,因此尚不清楚何时发布下一个Java版本)。或者,硬着头皮自己使用本机代码。通过JNI调用本机代码,对于本机AES代码,一种流行的实现是Brian
Gladman的实现。。当您使用AES-
NI指令获得更大,更新的处理器时,请使用一些了解这些指令的代码来替换该本机代码,如Intel所述。
通过使用AES-128而不是AES-256,您应该获得+
40%的速度提升。目前,突破AES-128超出了人类的技术范围,并且在接下来的几十年中仍将如此。您是否真的需要256位AES密钥?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)