我正在尝试使用以下代码在Android KeyStore中存储AES密钥:
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(...)'行无法生成throwig:
java.security.KeyStoreException: java.lang.IllegalArgumentException: Unsupported secret key algorithm: AES/CBC/PKCS5Padding
如何将我的密钥存储在Android.KeyStore中?
答案 0 :(得分:1)
CBC和PKCS5Padding不是密钥的一部分,但密钥大小是。
在给出错误消息时稍微猜测只是使用“AES”。
SecretKey AESkey = new SecretKeySpec(byteKey, 0, byteKey.length, "AES");
文档最好是最薄的,我能找到的最接近的是SecretKeyFactory Algorithms
:“AES”构造用于AES算法的密钥。请参阅:SecretKeyFactory Algorithms。