gpt4 book ai didi

android - 无效 key 异常 : Only SecretKey is supported

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:36:02 25 4
gpt4 key购买 nike

我最近开始在设备中看到此错误。

java.security.InvalidKeyException: Only SecretKey is supported
at com.android.org.conscrypt.OpenSSLCipher.checkAndSetEncodedKey(OpenSSLCipher.java:436)
at com.android.org.conscrypt.OpenSSLCipher.engineInit(OpenSSLCipher.java:273)
at javax.crypto.Cipher.tryTransformWithProvider(Cipher.java:2664)
at javax.crypto.Cipher.tryCombinations(Cipher.java:2575)
at javax.crypto.Cipher$SpiAndProviderUpdater.updateAndGetSpiAndProvider(Cipher.java:2480)
at javax.crypto.Cipher.chooseProvider(Cipher.java:567)
at javax.crypto.Cipher.init(Cipher.java:975)
at javax.crypto.Cipher.init(Cipher.java:910)

来自 https://github.com/justinsb/android-libcore/blob/master/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/OpenSSLCipher.java#L232在以下情况下抛出异常:

if (!(key instanceof SecretKey)) {
throw new InvalidKeyException("Only SecretKey is supported");
}

我总是像这样从商店获取我的 SecretKey:

SecretKey key = (SecretKey) keyStore.getKey(KEY_NAME, null);

知道发生了什么吗?

最佳答案

使用 Key_Generator 对象生成 key 。

例如:

将SecretKeyObject初始化为全局

SecretKey secretKeyObject;

通过以下方式初始化 key 生成器对象:

KeyGenerator keyGeneratorObject = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES,"AndroidKeyStore");
keyStoreObject.load(null);
keyGeneratorObject.init(new KeyGenParameterSpec.Builder(key_name,KeyProperties.PURPOSE_ENCRYPT|KeyProperties.PURPOSE_DECRYPT).setBlockModes(KeyProperties.BLOCK_MODE_CBC).setUserAuthenticationRequired(true)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7).build());
secretKeyObject = keyGeneratorObject.generateKey();

然后

cipherObject.init(Cipher.ENCRYPT_MODE, secretKeyObject);

这对我有用。

关于android - 无效 key 异常 : Only SecretKey is supported,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48754348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com