无效密钥异常:仅支持SecretKey。

11

我最近在设备上看到了这个错误。

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);

有什么想法吗?


1
如果 keynull,那么就会发生这种情况。null instanceof T 总是返回 false - President James K. Polk
2个回答

2

如果密钥为null,就会出现这种情况。

我曾经遇到过类似的问题,只是我的代码有一个bug,导致无法正确读取密钥。因此,在Cipher.init()中传递了null,导致出现了这个消息。


2
使用Key_Generator对象生成秘密密钥。
例如:
将SecretKeyObject初始化为全局变量。
最初的回答:使用Key_Generator对象生成秘密密钥。例如,将SecretKeyObject初始化为全局变量。
SecretKey secretKeyObject;

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

最初的回答
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);

这对我起作用了。

最初的回答

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接