KeyStore operations



我是Java/Android KeyStores的新手,在阅读了文档和一些教程后,我仍然有点困惑于操作的确切作用,尤其是加载和存储调用。我正在查看Java方法中的以下代码,但在理解它时遇到了一些困难。inKeyStore是KeyStore类型的输入参数。

String password = "password";
KeyStore newKeyStore;
FileOutputStream out = mContext.openFileOutput("my.keystore", 0);
FileInputStream in = null;
try {
  inKeyStore.store(out, password.toCharArray());
} catch (KeyStoreException e) {
  if (out) out.close();
  in = mContext.openFileInput("my.keystore");
  newKeyStore = KeyStore.getInstance("BKS");
  newKeyStore.load(in, password.toCharArray());
  if (in) in.close();
}

我知道inKeyStore.store()在未初始化的情况下会抛出KeyStoreException。然而,我对的一些事情感到困惑

  1. 什么是"my.keystore"文件?它是文件系统中的实际文件,还是密钥库的名称
  2. 当inKeyStore.store()被调用时,什么数据被写入到哪里?是"my.keystore"文件中写入inKeyStore的数据吗
  3. 密码的意义是什么
  4. 类似于Q2,当调用newKeyStore.load()时,什么数据被写入到哪里

谢谢!

在您的案例中,您有:
-内存中的KeyStore实例:KeyStore.getInstance(String type, String provider)
-文件系统上的密钥库文件:{app_priv_folder}my.keystore

要读取(文件==>内存):KeyStore:load(InputStream流,char[]密码)

从提供的InputStream 初始化此KeyStore

写入(内存==>文件):KeyStore:store(OutputStream流,char[]密码)

将此KeyStore写入指定的OutputStream

答案:

  1. 正如您所猜测的,"my.keystore"是文件系统上(应用程序专用文件夹中)密钥库文件的名称
  2. 不,恰恰相反
    inKeyStore.store(out, password.toCharArray())将inKeyStore数据存储在文件"my.keystore"中:FileOutputStream out = mContext.openFileOutput("my.keystore", 0);
  3. 密钥库文件受该密码保护
  4. newKeyStore.load():从"my.keystore"读取数据,将其加载到内存中的keystore实例中

相关内容

  • 没有找到相关文章

最新更新