gpt4 book ai didi

java - Java 的 AES 加速

转载 作者:太空狗 更新时间:2023-10-29 22:43:29 28 4
gpt4 key购买 nike

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

  • 是否可以将专用 AES 加密硬件与 Java 结合使用(使用 JCE,或者可能使用不同的 API)?
  • 如果我有更好的 CPU,Java 会利用特殊的 CPU 特性(SSE5?!)吗?
  • 或者是否有更快的 JCE 供应商? (我试过 SunJCE 和 BouncyCaSTLe - 没有太大区别。)
  • 其他可能性?

最佳答案

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

可能,JCE 提供者可以为您做到这一点。我不知道有任何现成的 JCE 提供程序包含针对 AES 的优化 native 代码(有一个名为 Apache JuiCE 的项目,但它似乎停滞不前,我不知道它的状态)。然而,可以想象 SunJCE 将在未来的版本中这样做(但随着 Oracle 收购 Sun 和 OpenJDK 7 的过度功能,下一个 Java 版本何时发布尚不清楚)。或者,硬着头皮自己使用 native 代码。通过 JNI 调用 native 代码,而对于 native AES 代码,一种流行的实现是来自 Brian Gladman 的实现。 .当您使用 AES-NI 指令获得更大更新的处理器时,请将 native 代码替换为一些了解这些指令的代码,如 Intel describes .

通过使用 AES-128 而不是 AES-256,您应该获得 +40% 的速度提升。破解 AES-128 目前超出了人类的技术能力范围,并且在未来几十年内应该会如此。您真的需要 AES 的 256 位 key 吗?

关于java - Java 的 AES 加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3045520/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com