gpt4 book ai didi

java - 在 Android 中隐藏 keystore 密码的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:48 26 4
gpt4 key购买 nike

我是 Android 开发和实现 SSLSockets 的新手。在做了一些挖掘之后,我能够设置一个可以正常工作的简单服务器/客户端。我觉得这个实现可能需要一些工作,并且很难理解如何将密码加载到 keystore 而不用纯文本形式。这是客户端的一些代码。如您所见,我已将密码硬编码到本地变量中。有没有更好的方法来加载 keystore 密码,这样我就不会在代码中以纯文本形式使用它?

    char [] KSPASS = "password".toCharArray();
char [] KEYPASS = "password".toCharArray();
try {
final KeyStore keyStore = KeyStore.getInstance("BKS");
keyStore.load(context.getResources().openRawResource(R.raw.serverkeys), KSPASS);

final KeyManagerFactory keyManager = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManager.init(keyStore, KEYPASS);

final TrustManagerFactory trustFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustFactory.init(keyStore);

sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManager.getKeyManagers(), trustFactory.getTrustManagers(), null);
Arrays.fill(KSPASS, ' ');
Arrays.fill(KEYPASS, ' ');

KSPASS = null;
KEYPASS = null;

更新:

事实证明客户端根本不需要知道 keystore 密码。我修改了代码以将 null 作为密码传入。到目前为止,初步测试已经与服务器通信。在服务器端,我仍然加载 keystore 密码。

        final KeyStore keyStore = KeyStore.getInstance("BKS");
keyStore.load(context.getResources().openRawResource(R.raw.serverkeys), null);

final KeyManagerFactory keyManager = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManager.init(keyStore, null);

final TrustManagerFactory trustFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustFactory.init(keyStore);

sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManager.getKeyManagers(), trustFactory.getTrustManagers(), null);

最佳答案

嗯,这不是一个容易开始的问题。

例如,您可以在应用程序启动时向用户请求密码,这样密码就不会硬编码在您的代码中。我认为这是最安全的方法。

如果这不可能,那么如果有人可以访问 jar 并“看到”代码和随后的密码,那么您的问题就会出现。您可以委托(delegate)给保护这些 jar 的用户。

如果这不可能,那么您可以加密密码并将其存储在某个地方。然后在您的代码中对 key 进行硬编码以解密密码。所以查看 jar 的人看不到你的真实密码。只有解密 key 。当然,如果付出真正的努力,他可以获得 key 并尝试找到密码所在的位置并对其进行解密并获得 key ,但这需要更多的努力。

最后还是要看你有什么安全需求

关于java - 在 Android 中隐藏 keystore 密码的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7449540/

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