我需要实现256位AES加密,我引用这个 - http://nelenkov.blogspot.jp/2015/06/keystore-redesign-in-android-m.html KeyGenerator看起来像这样。
KeyGenerator keyGenerator = KeyGenerator
.getInstance(KeyProperties.KEY_ALGORITHM_AES,"AndroidKeyStore");
KeyGenParameterSpec spec = new KeyGenParameterSpec.Builder(keyName,
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setUserAuthenticationValidityDurationSeconds(5 *11160)
.build();
keyGenerator.init(spec);
SecretKey key1 = keyGenerator.generateKey();
当我从keystore导入密钥的编码值时,它会向我返回null。
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
SecretKey key3 = (SecretKey) keyStore.getKey(keyName, null);
Log.d("Test MM",key3.getEncoded()+",");
我在logcat中找到了key3.getEncoded()的空值。请给我一些建议。
答案 0 :(得分:6)
在密钥库中生成的对称密钥在Android M中是不可移植的。因此它的工作原理与预期完全相同。您仍然可以使用带有Cipher
的密钥来加密/解密,但是您无法获得原始密钥字节。通常你应该要么。