我创建了一个加密模块并将其导出为 jar 文件。
为了通过 FIPS 验证,库在加载时需要进行自我完整性测试。
这样做的第一个想法是在运行时读取 jar 文件,进行哈希并将其与保存在某处的签名进行比较。
通过解压缩使用 jar 文件的应用程序 apk,我找不到 jar。所以我猜jar中的类保存在classes.dex中,对吗?是否可以从 classes.dex 中恢复 jar?
在加载模块之前,您需要执行“批准的完整性技术”。NIST“批准”的唯一完整性验证方法是: - DSA/RSA/ECDSA 签名 - C/MAC 或 HMAC
请参阅FIPS140-2 实施指南文档中的“6.4 批准的完整性技术” 。
简单的 MD5/SHA-1/SHA-2 哈希是不够的。
dex 格式不公开,但确实存在将其提取到 jar 的工具,称为 dex2jar,可在此处找到http://code.google.com/p/dex2jar/
不要认为它解决了你的问题,只是认为你想知道。
是否可以从 classes.dex 中恢复 jar?
不。
而且,它对你没有一点好处。谁更改了您的 JAR,也只会更改哈希值。