首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >面向Java的AES加速

面向Java的AES加速
EN

Stack Overflow用户
提问于 2010-06-15 13:22:52
回答 6查看 13.2K关注 0票数 17

我想加密/解密大量的小数据(2-10 to )。现在性能还可以:在Core2Duo上,我得到了大约90 MBytes/s AES256 (当使用2个线程时)。但是我可能需要在将来改进这一点--或者至少减少对CPU的影响。

  • 用Java (使用JCE或可能使用不同的API)可以使用专用的AES加密硬件吗?
  • 如果我得到更好的CPU,Java会利用特殊的CPU特性(SSE5?!)吗?
  • 还是有更快的JCE提供者?(我试过SunJCE和BouncyCastle --没什么大区别。)
  • 其他可能性?
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-06-15 20:01:01

JVM在执行代码(碰巧是AES加密)时不会利用特殊的CPU特性:将某些代码识别为AES的实现超出了JIT编译器的能力。要使用特殊的硬件(例如VIA处理器上的“挂锁”,或较新的Intel处理器上的AES-NI指令),您必须在某个时候通过“本机代码”。

可能,JCE提供者可以为您做到这一点。我不知道有任何现成的JCE提供程序,其中包括用于AES的优化的本机代码(有一个名为Apache JuiCE的项目,但它似乎被搁置了,我不知道它的状态)。不过,可以想象,SunJCE将在未来的版本中做到这一点(但由于Oracle购买了Sun和OpenJDK 7的过度特性,下一个版本何时发布尚不清楚)。或者,咬紧牙关自己使用本机代码。本机代码是通过JNI调用的,对于本机AES代码,流行的实现是来自布赖恩·格拉德曼的实现。当你用AES-NI指令得到一个更大更新的处理器时,用一些知道这些指令的代码(如英特尔 )替换本机代码。

通过使用AES-128而不是AES-256,您应该得到一个+40%的速度提升.打破AES-128目前已超出人类的技术能力范围,今后几十年仍应如此。你真的需要一个256位的AES密钥吗?

票数 14
EN

Stack Overflow用户

发布于 2014-12-03 14:45:20

以防有人碰到这个。JAVA 8现在使用AES-NI。参见:在默认情况下启用AES-NI本质?

票数 12
EN

Stack Overflow用户

发布于 2013-01-10 14:29:32

通过使用SunPKCS11安全提供程序和mozilla库,您可以从提高AES速度中获益。

安装程序描述在

  • 使用Intel AES-NI指令在Java上改进高级加密标准(AES)密码性能
  • JavaTM PKCS#11参考指南
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3045520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档