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

Android Strongbox密钥无法使用SHA256的RSA/OAEPPadding问题求助

RSA/ECB/OAEPPadding with SHA256 Fails on Pixel 3a Strongbox (Works with SHA1 & Non-Strongbox)

我之前在Pixel 3a上也碰到过一模一样的问题,后来才搞清楚:这款设备的Strongbox硬件模块对RSA-OAEP的参数组合有比普通AndroidKeyStore更严格的要求。你的问题核心在于主摘要算法(SHA256)和MGF1使用的哈希算法(SHA1)不匹配——软件实现的AndroidKeyStore允许这种混合配置,但硬件Strongbox为了安全合规,强制要求两者必须一致。

解决方案

只需要调整两处参数,就能解决这个问题:

  1. 修改OAEP参数规范,让MGF1哈希与主摘要对齐:
    将你的OAEPParameterSpec里的MGF1参数从SHA1改成SHA256,和主摘要算法保持一致:

    val spec = OAEPParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256, PSource.PSpecified.DEFAULT)
    
  2. 确认密钥生成参数的完整性:
    你的generateRsaKeypair方法已经设置了setDigests(KeyProperties.DIGEST_SHA256),这一步是正确的——它确保Strongbox允许密钥将SHA256用于OAEP的主摘要和MGF1哈希,不需要额外修改。

背后的原因

  • 普通AndroidKeyStore(非Strongbox)是纯软件实现,对OAEP参数的兼容性更宽松,允许主摘要和MGF1哈希使用不同的算法。
  • Pixel 3a的Strongbox基于硬件安全模块(HSM),这类模块通常会遵循更严格的安全规范,部分厂商会强制要求OAEP的主摘要与MGF1哈希算法一致,以此避免潜在的安全漏洞。

修改后重新运行测试,应该就能正常完成加密解密的往返流程了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 10:02:28