【发布时间】:2017-11-14 22:13:52
【问题描述】:
我可以像这样生成一个存储在 Android Keystore 中的密钥:
private static final String AndroidKeyStore = "AndroidKeyStore";
private static final String AES_MODE = "AES/GCM/NoPadding";
keyStore = KeyStore.getInstance(AndroidKeyStore);
keyStore.load(null);
if (!keyStore.containsAlias(KEY_ALIAS)) {
KeyGenerator keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, AndroidKeyStore);
keyGenerator.init(
new KeyGenParameterSpec.Builder(KEY_ALIAS,
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM) .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.setRandomizedEncryptionRequired(false)
.build());
keyGenerator.generateKey();
}
同样,我可以这样检索它:
keyStore.getKey(KEY_ALIAS, null);
我知道 getKey() 函数返回一个 Key 对象,但我还没有找到一种方法来显示密钥本身。它似乎没有 toString() 或 getBytes() 或类似的东西。
如何获取密钥的字节,或者至少打印出它的字符串版本?有没有可能?
【问题讨论】:
标签: android encryption key android-keystore