我按照下面的样本 https://nelenkov.blogspot.in/2012/05/storing-application-secrets-in-androids.html 它工作正常,直到棉花糖中的棉花糖,它给了一些例外,我无法将密钥和价值对存储到密钥库。 Bellow代码我得到例外 最后一步似乎有两种选择:
keyStore.setKeyEntry(String alias,byte [] key,Certificate [] chain);
或
keyStore.setKeyEntry(String alias,Key key,char [] password,Certificate [] chain);
我从两个中的第二个开始,但收到了java.security.KeyStoreException:条目无法用密码保护....好吧,这很奇怪,为什么会有一个方法可以保证抛出一个例外?让我们尝试1号门。
此时,当我调用setKeyEntry并传递keyPair.getPrivate()。getEncoded()作为第二个参数时,我收到java.security.KeyStoreException:不支持操作,因为系统未知密钥编码。
byte[] encodedKey = Base64.encode("keytostore".getBytes(),
Base64.DEFAULT);
SecretKey originalKey = new SecretKeySpec(encodedKey, 0,
encodedKey.length, "AES");
KeyStore instance = KeyStore.getInstance("AndroidKeyStore");
instance.load(null);
instance.setEntry(
"key1",
new KeyStore.SecretKeyEntry(originalKey),
new KeyProtection.Builder(KeyProperties.PURPOSE_ENCRYPT
| KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(
KeyProperties.ENCRYPTION_PADDING_NONE)
.build());