【发布时间】:2016-05-12 13:50:54
【问题描述】:
我的用例涉及在 Java 中使用 AES 和 GCM 对 PB 级的大量敏感数据进行加密,我需要高吞吐量才能在合理的时间内完成该任务。
就像这里的 previously asked and answered 一样,AES/GCM 在最新的 JDK 8 中仍然严重受损(在我的硬件上约为 17MB/s)。我很高兴知道 JEP 246 添加 significant hardware acceleration for GCM 已将其纳入 Java 9 的路线图,但在我撰写本文时,下一个主要 Java 版本的通用可用性已被推迟一年多。
到目前为止,我发现最快的实现是 Bouncy Castle Provider,没有硬件加速,吞吐量约为 170MB/s。我知道我的硬件通过运行原生库 GnuTLS (gnutls-cli --benchmark-ciphers) 和 OpenSSL (openssl speed -evp aes-128-gcm),对于 AES/GCM,两者的时钟速度均超过 2GB/s。不幸的是,我找不到围绕其中任何一个的当前 Java 包装器。我遇到的最接近的是Apache JuiCE,它基于 OpenSSL,但在 8 年前就被废弃了。
有没有人遇到过支持 AES/GCM 硬件加速的 JCE 提供程序,我可以在短期内使用,无论是商业的还是开源的?
【问题讨论】:
-
OpenSSL API 相当简单;甚至比JCE还要好。您可以轻松地为其制作 JNI 包装器。
标签: java performance encryption cryptography aes-gcm