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
相关产品推荐
相关产品推荐

