Java Keystore.getKey() 缓慢,同时 key 存储大小增加

标签 java encryption keystore java-security

我正在使用java key 存储来存储和检索加密 key 。当我的 key 存储大小很小时,它的工作速度更快。但是,一旦我的 key 存储大小增加, key 存储操作就会变慢。

我正在linux平台上工作,Java版本Jdk_1.8。和 safenet 作为提供商。

最佳答案

我一直面临着同样的问题,即不同操作系统平台的执行速度有所不同。

Jvm 将 key 存储加载到内存中。它有哈希表集合作为内部存储。

哈希表已同步。

每当您从 key 存储执行获取操作时,它都会从内存中的 key 存储而不是从物理 key 存储返回它。 您可以通过在 Linux 基础操作系统中使用 ("top"- %wa 部分) 命令来确认。

key 存储使用哈希表,这是性能下降的根本原因。

我通过在初始化项目时将 keystore 中的所有 key 加载到 ConcurrentHashMap 中解决了这个问题。后来, 所有读取操作将从 MAP 而不是 keystore 执行。 并确保所有写入操作都将在 keystore 和 MAP 上执行。

关于Java Keystore.getKey() 缓慢,同时 key 存储大小增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38457864/

相关文章:

c# - 加密现有的 zip 文件

c# - 在 c# 替代方案的 cfusion_encrypt 中填充的 key 是什么?

java - 如何使用私钥加密 PBEWithHmacSHA512AndAES_128 创建 PKCS12 keystore

java - 客户端的证书?

java - 如何在特定连接上使用不同的证书?

java - Android 与 websocket 通信(Node Websocket 服务器和 Android Java 客户端)。不适用于 Android 4

Java滚动条

c# - RSACryptoServiceProvider 使用自己的公钥和私钥加密和解密

java - 如何从 2 行 java.util.logging 输出中抑制日期行?

java - 为什么 C 和 Java 的表达式 m++ + (++m) 的输出不同