我想将键值对(键和值)存储到android密钥库中

时间:2016-07-27 11:42:36

标签: android-6.0-marshmallow android-keystore android-securityexception

我按照下面的样本 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());

0 个答案:

没有答案