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

Android集成BouncyCastle FIPS发行版遇校验和失败问题求助

Android中BouncyCastle FIPS发行版校验和错误的解决办法

BouncyCastle的FIPS模块内置严格的完整性校验机制,你遇到的Module checksum failed错误,本质是加载的jar包哈希值和官方预设值不匹配,以下是针对性解决步骤:

1. 修复jar包来源与文件名问题

  • 从BouncyCastle官方渠道重新下载bc-fips-1.0.2.3.jar,下载后自行计算SHA-256哈希,与错误信息中给出的官方预期值(735510be1bb5157434c14d1e1ca9844b6971634fc03481d93eec75ff27b27034)对比,确保包未被篡改。
  • 本地引入时修正文件名:你当前配置的bc-fips-1.0.2.3.jar.jar多了一个.jar后缀,改为bc-fips-1.0.2.3.jar,避免构建路径识别错误。

2. 禁止构建工具修改FIPS jar包

FIPS模块不允许任何字节码修改(混淆、优化、重打包等),需在Gradle中配置保护规则:

  • 在app模块的build.gradle中添加打包与混淆配置:
    android {
        packagingOptions {
            pickFirst 'org/bouncycastle/**'
        }
        buildTypes {
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                proguardFile 'proguard-bcfips-rules.pro'
            }
            debug {
                minifyEnabled false
            }
        }
    }
    
  • 新建proguard-bcfips-rules.pro文件,写入以下规则:
    -keep class org.bouncycastle.** { *; }
    -dontwarn org.bouncycastle.**
    -optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
    

3. 绝对不要自行重新签名FIPS jar包

BouncyCastle的FIPS模块是经过官方合规签名的,自行重新签名会直接破坏其完整性校验逻辑,导致错误无法解决。若构建过程中存在自动签名该jar的流程,需配置Gradle跳过对该文件的签名处理。

4. 排查并排除依赖冲突

确保项目中未引入普通版BouncyCastle依赖(如bcprov-jdk15on),FIPS版与普通版类结构冲突会间接导致校验失败:

  • 执行./gradlew app:dependencies查看依赖树,若发现冲突依赖,在引入bc-fips时排除:
    implementation('org.bouncycastle:bc-fips:1.0.2.3') {
        exclude group: 'org.bouncycastle', module: 'bcprov-jdk15on'
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:27:33