gpt4 book ai didi

java - 缓存 KeyStore 的内容并将其转换为 InputStream

转载 作者:行者123 更新时间:2023-12-04 06:48:02 25 4
gpt4 key购买 nike

我正在使用 AES 来完成对称 key 加密。
我将 key 存储在受密码保护的 KeyStore 中。

api 公开以下内容以从 keystore 加载 key

keyStore.load(inputStream, keyStorePassword.toCharArray()); 

所以每次当我想加密或解密时,我都必须传递输入流,这在我看来至少是性能下降,因为它具有 每次都重新阅读内容。

你能帮我解决将它存储在内存中然后访问它并转换为 InputStream 的策略吗?

注意:
我确实尝试将 keystore 的内容读取为字符串(UTF-8)并将其转换为 InputStream 并将其传递给 api。但它在以下异常后吐出

java.io.IOException: Invalid keystore form

最佳答案

KeyStore 是某种二进制格式。将其转换为 UTF-8 字符串是不好的。您可以使用 ByteArrayInputStream它使用字节缓冲区。

但是 : 在我看来,性能优化不算数。您应该进行一些分析以检查这是否真的影响性能。因为它不应该。操作系统也会缓存,如果在此期间没有更改,很可能不会一遍又一遍地从磁盘读取相同的文件。程序员通常非常不擅长判断程序的哪些部分是性能 pig ,哪些不是。

另外:密码通常是通过 char 提供的,这是有原因的。数组:您可以完全控制数组的内容,并且可以在不再需要时将其清除。密码应尽可能短地保留在内存中。你没有那种对简单字符串的控制(你不知道它们何时被垃圾收集)。

关于java - 缓存 KeyStore 的内容并将其转换为 InputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3510580/

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