密钥存储大小增加时,Java Keystore.getKey()变慢

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

我正在使用Linux平台,Java版本Jdk_1.8。 和safenet作为提供者。

我一直面临着与执行速度相关的同一问题,因不同的操作系统平台而异。

Jvm在内存中加载密钥库。 它将哈希表集合作为内部存储。

Hashtable是同步的。

无论何时从密钥库执行get操作,它都会从内存密钥库中返回,而不是从物理密钥库中返回。 你可以在linux base OS中使用(“top” – %wa section)命令来确认它。

密钥库使用哈希表,它是性能描述背后的根本原因。

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

当我们使用safenet jar文件作为密钥存储提供程序时,我们遇到了这个问题,当我将safenet作为提供程序删除并使用java的默认提供程序时,我没有遇到任何与性能相关的问题。