将对称密钥导入Android Keystore(外部生成的密钥)

Mik*_*e76 5 android keystore android-keystore

我使用以下代码将对称密钥导入 Android 密钥库,如本示例所示: https: //developer.android.com/reference/kotlin/android/security/keystore/KeyProtection

  final SecretKey aesKey = new SecretKeySpec(myKeyByteArray, 0, myKeyByteArray.length, "AES");
  final KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
  keyStore.load(null);
  keyStore.setEntry(
          "my_key_alias",
          new KeyStore.SecretKeyEntry(aesKey),
          new KeyProtection.Builder(KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
         .setBlockMode(KeyProperties.BLOCK_MODE_GCM)         
         .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
         .build());
Run Code Online (Sandbox Code Playgroud)

还可以使用以下代码生成随机 AES 密钥:

final KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(AES_KEY_LEN);
final SecretKey aesKey = keyGenerator.generateKey();
....
Run Code Online (Sandbox Code Playgroud)

请注意,此密钥生成器不会在安全硬件中生成密钥。它只是在应用程序进程中生成一个随机密钥。

如何将外部生成的对称密钥导入 Android 密钥存储?我是否需要采取一些使用公私密钥对的解决方法来加密对称密钥?

编辑:没有必要的解决方法。可以使用上述代码将外部生成的密钥导入到 Android 密钥库中。