Android密钥库:不支持的密钥算法:AES/CBC/PKCS5P

Android密钥库:不支持的密钥算法:AES/CBC/PKCS5P,android,encryption,aes,keystore,Android,Encryption,Aes,Keystore,我正在尝试使用以下代码将AES密钥存储在Android密钥库中: SecretKey AESkey = new SecretKeySpec( byteKey, 0, byteKey.length, "AES/CBC/PKCS5Padding"); if (ks == null) { ks = KeyStore.getInstance("AndroidKeyStore"); ks.load(null); } ks.deleteEntry("aes_key"); ks.setE

我正在尝试使用以下代码将AES密钥存储在Android密钥库中:

SecretKey AESkey = new SecretKeySpec(
  byteKey, 0, byteKey.length, "AES/CBC/PKCS5Padding");  

if (ks == null) 
{
  ks = KeyStore.getInstance("AndroidKeyStore");
  ks.load(null);
}

ks.deleteEntry("aes_key");
ks.setEntry("aes_key",
   new KeyStore.SecretKeyEntry(AESkey),
   new KeyProtection.Builder(KeyProperties.PURPOSE_ENCRYPT |
         KeyProperties.PURPOSE_DECRYPT)
         .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
         .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
         .build());
带有“setEntry(…)”的行失败,原因如下:

java.security.KeyStoreException: java.lang.IllegalArgumentException: Unsupported secret key algorithm: AES/CBC/PKCS5Padding

如何在Android.KeyStore中存储密钥

CBC和PKCS5P不是密钥的一部分,但密钥大小是

在给出错误消息时,只需使用“AES”即可进行猜测


文档充其量也很薄,我能找到的最接近的是
SecretKeyFactory算法
:“AES”构造用于AES算法的密钥。请参阅:.

CBC
PKCS5Padding
不是密钥的一部分,但密钥大小是。@zaph您想说我必须更改行new SecretKeySpec(byteKey,0,byteKey.length,“AES/CBC/PKCS5Padding”);到新的SecretKeySpec(byteKey,0,byteKey.length,“AES”)?
SecretKey AESkey = new SecretKeySpec(byteKey, 0, byteKey.length, "AES");