You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android KeyStore硬件特定异常:Pixel3系列API33适配方案咨询

问题

在Pixel3、Pixel3a、Pixel4(API 33)设备上捕获到如下堆栈跟踪异常,但搭载相同API等级的新款设备功能完全正常,请问如何让功能在这些旧硬件上正常运行?

重点异常行已在以下堆栈中用--- important ---标注:

--- important ---
08-17 12:22:12.623 20193 20193 W System.err: javax.crypto.IllegalBlockSizeException
08-17 12:22:12.623 20193 20193 W System.err: at android.security.keystore2.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:613)
--- important ---
08-17 12:22:12.623 20193 20193 W System.err: at javax.crypto.Cipher.doFinal(Cipher.java:2056)
08-17 12:22:12.623 20193 20193 W System.err: at ...omitted...
08-17 12:22:12.623 20193 20193 W System.err: at androidx.biometric.BiometricFragment$9.run(BiometricFragment.java:907)
08-17 12:22:12.623 20193 20193 W System.err: at android.os.Handler.handleCallback(Handler.java:942)
08-17 12:22:12.623 20193 20193 W System.err: at android.os.Handler.dispatchMessage(Handler.java:99)
08-17 12:22:12.623 20193 20193 W System.err: at android.os.Looper.loopOnce(Looper.java:201)
08-17 12:22:12.623 20193 20193 W System.err: at android.os.Looper.loop(Looper.java:288)
08-17 12:22:12.623 20193 20193 W System.err: at android.app.ActivityThread.main(ActivityThread.java:7940)
08-17 12:22:12.623 20193 20193 W System.err: at java.lang.reflect.Method.invoke(Native Method)
08-17 12:22:12.623 20193 20193 W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
08-17 12:22:12.623 20193 20193 W System.err: at com.android.internal.os.ExecInit.main(ExecInit.java:49)
08-17 12:22:12.623 20193 20193 W System.err: at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
08-17 12:22:12.623 20193 20193 W System.err: at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:355)
08-17 12:22:12.623 20193 20193 W System.err: Caused by: android.security.KeyStoreException: Key user not authenticated (internal Keystore code: -26 message: In KeystoreOperation::update
08-17 12:22:12.623 20193 20193 W System.err:
--- important ---
08-17 12:22:12.623 20193 20193 W System.err: Caused by:
08-17 12:22:12.623 20193 20193 W System.err: 0: In update: KeyMint::update failed.
08-17 12:22:12.623 20193 20193 W System.err: 1: Error::Km(ErrorCode(-26))) (public error code: 2 internal Keystore code: -26)
--- important ---
08-17 12:22:12.623 20193 20193 W System.err: at android.security.KeyStore2.getKeyStoreException(KeyStore2.java:369)
08-17 12:22:12.623 20193 20193 W System.err: at android.security.KeyStoreOperation.handleExceptions(KeyStoreOperation.java:78)
08-17 12:22:12.623 20193 20193 W System.err: at android.security.KeyStoreOperation.update(KeyStoreOperation.java:115)
08-17 12:22:12.623 20193 20193 W System.err: at android.security.keystore2.KeyStoreCryptoOperationChunkedStreamer$MainDataStream.update(KeyStoreCryptoOperationChunkedStreamer.java:222)
08-17 12:22:12.624 20193 20193 W System.err: at android.security.keystore2.KeyStoreCryptoOperationChunkedStreamer.update(KeyStoreCryptoOperationChunkedStreamer.java:156)
08-17 12:22:12.624 20193 20193 W System.err: at android.security.keystore2.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:179)
08-17 12:22:12.624 20193 20193 W System.err: at android.security.keystore2.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:603)
08-17 12:22:12.624 20193 20193 W System.err: ... 13 more
解决方案
  • 缩短生物识别验证后的操作窗口期:旧Pixel设备的KeyStore对用户身份验证的有效期更严格,避免在生物识别通过后延迟执行加密/解密操作,确保在验证成功后的几秒内完成Cipher的doFinal()调用。
  • 避免复用已过期的Cipher实例:每次生物识别验证通过后,重新初始化Cipher对象,不要复用之前创建的实例,防止因验证会话过期导致的KeyStore权限问题。
  • 降级KeyStore实现适配旧硬件:针对API33的旧Pixel设备,切换到旧版AndroidKeyStore(而非AndroidKeyStore2)实现,在密钥生成时指定兼容的参数,比如不使用仅新款硬件支持的KeyMint特性。
  • 调整加密数据块大小:异常中的IllegalBlockSizeException可能和旧设备对加密块的处理逻辑有关,尝试将数据拆分成更小的块进行加密,或者确保输入数据长度符合加密算法的块大小要求(比如AES的16字节倍数)。
  • 捕获并重试操作:捕获KeyStoreException(错误码-26)和IllegalBlockSizeException,触发重新进行生物识别验证后重试加密/解密流程,这是适配旧设备验证会话不稳定的临时可行方案。

内容的提问来源于stack exchange,提问作者stud0709

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 04:42:35