尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Android-Goldfinger 加密解密实战:用指纹保护 PIN 码与密码的完整方案

Android-Goldfinger 加密解密实战:用指纹保护 PIN 码与密码的完整方案 Android-Goldfinger 加密解密实战:用指纹保护 PIN 码与密码的完整方案【免费下载链接】Android-GoldfingerAndroid library to simplify Biometric authentication implementation.项目地址: https://gitcode.com/gh_mirrors/an/Android-Goldfinger想给 App 里的 PIN 码、密码加上「指纹锁」Android-Goldfinger 帮你用最少的代码实现生物识别加密解密。这是一篇面向 Android 新手的指纹加密实战指南带你从依赖引入到加密解密落地一次讲透。为什么你的 App 需要指纹加密解密?很多 App 把 PIN 码、登录密码直接存在 SharedPreferences 里一旦设备被 Root 或数据被导出用户隐私就完全暴露。正确的做法是:敏感数据以密文落盘只有通过指纹认证后才能解开。Android 官方提供的BiometricPromptKeyStore方案代码繁琐、坑点众多(如KeyPermanentlyInvalidatedException、CryptoObject 初始化时机等)。而Android-Goldfinger正是为简化这套流程而生的开源库,它封装了完整的指纹认证 加密解密链路,核心代码全部开源,你可以放心改造。一、快速上手:5 步接入指纹认证 ✅第 1 步:添加依赖在项目级build.gradle配置 mavenCentral 仓库,然后在模块的build.gradle中加入:implementation com.infinum:goldfinger:2.2.0 想用响应式编程?再加一个依赖implementation com.infinum:goldfinger-rx:2.2.0即可,用法见下文「Rx 响应式方案」。第 2 步:初始化 GoldfingerGoldfinger goldfinger new Goldfinger.Builder(context) .logEnabled(true) // 开启日志,方便调试 .build();Builder 是链式配置的入口,完整方法定义在 Goldfinger.java 中。系统会自动判断:Android 6.0 以上走真实实现,低版本则自动降级为 Mock(不会崩溃,但不会弹指纹框)。第 3 步:检查指纹硬件与录入状态if (goldfinger.canAuthenticate()) { // 设备支持指纹且已录入,可以安全发起认证 } else { // 提示用户录入指纹或改用密码登录 }第 4 步:配置认证弹窗 PromptParamsGoldfinger.PromptParams params new Goldfinger.PromptParams.Builder(activity) .title(指纹登录) .description(请验证指纹以解密你的密码) .negativeButtonText(取消) .build();第 5 步:发起认证goldfinger.authenticate(params, new Goldfinger.Callback() { Override public void onError(NonNull Exception e) { /* 异常处理 */ } Override public void onResult(NonNull Goldfinger.Result result) { if (result.type() Goldfinger.Type.SUCCESS) { // 指纹验证通过! } } });到这里,一个完整的「指纹认证」就完成了,全程不过十几行代码。二、核心实战:用指纹加密 PIN 码与密码 单纯认证还不够,我们的目标是加密存储敏感数据。Goldfinger 为此提供了两个杀手锏方法:encrypt()和decrypt(),它们把「指纹验证」和「数据加解密」绑定在一次认证中完成。加密保存:输入 PIN,指纹确认后落盘密文参考项目示例 SettingsActivity.java,当用户首次设置 PIN 时:goldfinger.encrypt(params, fp_pin, pin, new Goldfinger.Callback() { Override public void onResult(NonNull Goldfinger.Result result) { if (result.type() Goldfinger.Type.SUCCESS) { // result.value() 就是加密后的密文,放心存进 SharedPreferences saveToPrefs(result.value()); } } });解密读取:指纹通过,密文变回明文参考登录示例 LoginActivity.java,用户下次登录时:goldfinger.decrypt(params, fp_pin, encryptedPin, new Goldfinger.Callback() { Override public void onResult(NonNull Goldfinger.Result result) { if (result.type() Goldfinger.Type.SUCCESS) { // result.value() 就是还原后的 PIN 码明文 autoLogin(result.value()); } } });注意两个方法中间的key参数(示例中是fp_pin),它是密钥的唯一标识,加密和解密必须使用同一个 key,否则无法解开。三、背后原理:指纹如何与 AES 加密绑定?很多新手好奇:为什么指纹通过才能解密?秘密藏在默认的 AesCipherFactory.java 中:密钥存放在 Android 系统级安全容器AndroidKeyStore中,App 无法导出;密钥创建时设置了setUserAuthenticationRequired(true),即必须通过生物认证才能使用密钥;加密时生成 IV 向量并存入 SharedPreferences,解密时用同一 IV 还原;如果用户在系统设置里新增了指纹,旧密钥会立刻失效(即setInvalidatedByBiometricEnrollment(true)),防止旧指纹继续解锁。密文的编码与解码由默认的 Base64CipherCrypter.java 完成,加密流程对应内部模式 Mode.java 中的ENCRYPTION / DECRYPTION状态机。简单总结整条链路:步骤动作说明1生成 AES 密钥存入 AndroidKeyStore,绑定指纹2初始化 Cipher加密模式 记录 IV3指纹认证CryptoObject 绑定 BiometricPrompt4加密/解密认证通过后 Cipher 才允许 doFinal()5结果回调返回密文/明文四、完整流程参考:登录 设置 PIN 的闭环 项目example模块演示了一个完整的「设置 PIN → 指纹登录」闭环,建议按顺序阅读源码:SetPinActivity.java —— 首次设置 PIN 码SettingsActivity.java —— 指纹加密并保存 PINBaseLoginActivity.java —— 登录页逻辑,含解密回调处理LoginActivity.java —— 指纹解密登录五、Rx 响应式方案:RxGoldfinger ⚡如果项目使用 RxJava,Goldfinger 提供了一等公民支持。入口在 RxGoldfinger.java,初始化与用法几乎零学习成本:RxGoldfinger.Builder(context).build() .decrypt(params, fp_pin, encryptedPin) .subscribe(result - { /* 响应式处理解密结果 */ });加密、解密、认证都返回 Observable,可以无缝接入现有的 Rx 链路,配合flatMap、zip等操作符组合复杂业务。六、常见坑与解决方案 Oreo 系统不抛KeyPermanentlyInvalidatedException:这是 Android 8.0 的系统级 Bug,Goldfinger 在 GoldfingerImpl.java 中做了容错处理,建议在自己的业务代码中也兜底判断「解密失败后提示用户重新录入指纹」。指纹新增后密钥失效:这是安全设计,不是 Bug。体验上应在首次解密失败时引导用户重新设置 PIN。重复发起认证被忽略:库内部做了防重入保护,cancel()方法可随时取消当前认证。参数校验失败:使用PromptParams.Builder时注意title和negativeButtonText是必填项,校验逻辑见 ValidateUtils.java。七、注意事项与源码约定 最低支持API 14,指纹加密功能在API 23(Marshmallow)以上才生效,低版本会自动走 Mock 实现;需要配合androidx.biometric使用,请确保依赖版本兼容;想要了解项目全貌或二次开发,可以 clone 仓库到本地研究:git clone https://gitcode.com/gh_mirrors/an/Android-Goldfinger仓库内含core(核心库)、rx(响应式扩展)与example(完整示例)三个模块,代码结构清晰、注释完整,非常适合作为学习指纹加密与 AndroidKeyStore 的实战教材。总结 ✍️用 Android-Goldfinger 保护 PIN 码与密码,核心就三件事:初始化 → 检查能力 → encrypt/decrypt。它把最繁琐的 CryptoObject 初始化、密钥管理、异常容错全部封装好,让你专注于业务本身。无论是做指纹登录、支付确认还是敏感数据保险箱,这套方案都值得一试。【免费下载链接】Android-GoldfingerAndroid library to simplify Biometric authentication implementation.项目地址: https://gitcode.com/gh_mirrors/an/Android-Goldfinger创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表