在Android中存储AES密钥

Mar*_*usz 1 encryption android keystore android-keystore

我想在预装M设备上将AES密钥存储在AndroidKeyStore中

我试图使用生成的密钥 KeyGenerator

KeyGenerator keyGen = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES);
keyGen.init(256);
SecretKey secretKey = keyGen.generateKey();
Run Code Online (Sandbox Code Playgroud)

但我无法从KeyStore访问该密钥,后来我尝试使用 KeyPairGenerator

KeyPairGenerator kpg = KeyPairGenerator.getInstance(
                KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
kpg.initialize(new KeyPairGeneratorSpec.Builder(this)
                .setAlias("alias")
                .build());
KeyPair kp = kpg.genKeyPair();
Run Code Online (Sandbox Code Playgroud)

java.security.NoSuchAlgorithmException:未找到KeyPairGenerator AES实现

Ale*_*bin 7

Android Key Store仅支持API Level 23(请参阅https://developer.android.com/training/articles/keystore.html#SupportedAlgorithms).在较旧的平台上,您可以使用Android Keystore RSA密钥包装AES密钥.但是,这意味着AES密钥的密钥材料将在您的应用程序进程中可用,这消除了使用Android密钥库的许多安全优势.