java隐藏密钥_java – 在Android中隐藏密钥库密码的最佳方法是什么?
我是Android開發和實現SSLSockets的新手.在做了一些挖掘后,我能夠設置一個正常工作的簡單服務器/客戶端.我認為實現可以使用一些工作,并且難以將密碼加載到密鑰庫而不用純文本.這是客戶端的一些代碼.如您所見,我將密碼硬編碼到本地var中.是否有更好的方法加載密鑰庫密碼,所以我沒有在代碼中以純文本形式?
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;
更新:
事實證明,客戶端根本不需要知道密鑰庫密碼.我已修改代碼以傳入null作為密碼.到目前為止,初始測試已經與服務器進行通信.在服務器端,我仍然加載密鑰庫密碼.
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);
總結
以上是生活随笔為你收集整理的java隐藏密钥_java – 在Android中隐藏密钥库密码的最佳方法是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓手机挂载Linux,android
- 下一篇: android sina oauth2.