ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

扩展 Android-Goldfinger:通过 Builder 自定义 Factory 与 Crypter 的进阶指南

扩展 Android-Goldfinger:通过 Builder 自定义 Factory 与 Crypter 的进阶指南 扩展 Android-Goldfinger通过 Builder 自定义 Factory 与 Crypter 的进阶指南【免费下载链接】Android-GoldfingerAndroid library to simplify Biometric authentication implementation.项目地址: https://gitcode.com/gh_mirrors/an/Android-GoldfingerAndroid-Goldfinger 是一个专门用于简化 Android Biometric指纹/人脸认证集成的开源库它用几行代码就能完成认证 数据加解密的整套流程。默认情况下它内置了基于 AndroidKeyStore 的 AES 加密方案但真实项目中往往需要自定义密钥算法、加密格式甚至双通道登录。本文将以实战视角带你掌握通过Goldfinger.Builder自定义 Factory 与 Crypter 的完整方法让生物识别能力真正贴合你的业务需求。为什么需要自定义 Factory 与 Crypter在了解自定义之前先看 Android-Goldfinger 的默认行为。当你直接调用Goldfinger.Builder(context).build()时库会自动注入两个默认实现默认 FactoryAesCipherFactory位于core/src/main/java/co/infinum/goldfinger/crypto/impl/采用AES/CBC/PKCS7算法密钥存放在 AndroidKeyStore 中并且强制要求用户认证后才能使用。默认 CrypterBase64CipherCrypter负责把加密后的字节流做 Base64 编码存储。这套组合对大多数 App 已经够用但如果你遇到以下场景就必须自定义了 需要换成 RSA、HmacSHA256 等其他算法 需要与后端约定的加密格式保持一致 希望在不弹出生物识别弹窗的情况下也能加解密数据例如 PIN 码登录。自定义的入口就在Goldfinger接口内部的Builder类中源码见core/src/main/java/co/infinum/goldfinger/Goldfinger.java。Builder 提供的 6 个扩展点快速上手Goldfinger.Builder一共暴露了 6 个与加解密相关的配置方法加上 1 个日志开关配置方法作用对应接口.cipherFactory(...)创建加密用的 CipherCipherFactory.cipherCrypter(...)用 Cipher 执行加解密CipherCrypter.macFactory(...)创建 MAC 对象MacFactory.macCrypter(...)用 MAC 执行加解密MacCrypter.signatureFactory(...)创建签名对象SignatureFactory.signatureCrypter(...)用 Signature 执行加解密SignatureCrypter.logEnabled(true)打开内部日志方便调试—这几个接口的源码都在core/src/main/java/co/infinum/goldfinger/crypto/目录下结构非常清晰Factory 负责造加密对象Crypter 负责用加密对象两者必须搭配同一种类型使用。自定义 CipherFactory 与 CipherCrypter 的完整步骤下面以最常见的 Cipher 方案为例手把手教你写一套自己的加解密实现。第一步实现 CipherFactory继承 CipherFactory 接口基类Factory源码见core/src/main/java/co/infinum/goldfinger/crypto/Factory.java实现两个方法createEncryptionCrypter(key)负责生成用于加密的 CiphercreateDecryptionCrypter(key)负责生成用于解密的 Cipher。注意key参数由调用方传入通常用来区分不同的密钥条目。第二步实现 CipherCrypter继承 CipherCrypter 接口基类Crypter源码见core/src/main/java/co/infinum/goldfinger/crypto/Crypter.java分别实现encrypt(cipher, value)和decrypt(cipher, value)。这里拿到的 Cipher 已经通过生物识别认证被解锁你可以自由决定输出格式——Base64、Hex 甚至自定义拼接都可以。第三步在 Builder 中装配并 buildGoldfinger goldfinger new Goldfinger.Builder(context) .cipherFactory(new MyCipherFactory(context)) .cipherCrypter(new MyCipherCrypter()) .build();完成这三步Android-Goldfinger 就会在认证成功后自动调用你的 Crypter 完成数据加解密。整个调度逻辑封装在 CrypterProxy 中它会根据认证返回的 CryptoObject 类型Cipher / Mac / Signature自动路由到对应的 Crypter 实现。进阶技巧用 UnlockedAesCipherFactory 实现指纹 PIN 双通道这是 Android-Goldfinger 最有价值的一个自定义场景。项目里提供了一个现成的扩展类 UnlockedAesCipherFactory源码位于core/src/main/java/co/infinum/goldfinger/crypto/impl/它继承自AesCipherFactory只做了一件事把isUserAuthRequired()重写为false。什么意思呢默认的AesCipherFactory生成的密钥必须通过指纹/人脸认证才能使用而UnlockedAesCipherFactory生成的密钥不需要认证即可加解密。这正好可以支撑经典的指纹优先、PIN 兜底登录流程用户开启生物识别用默认AesCipherFactory加密存储数据认证后才能解密用户拒绝/无法使用指纹用UnlockedAesCipherFactory直接加密 PIN 码输入 PIN 即可解密完全跳过生物识别弹窗。把两种 Factory 分别装配到不同的Goldfinger实例中互不干扰一套加密体系轻松打通两种登录方式。踩坑指南Mac 与 Signature 必须成对配置自定义虽然灵活但也有严格的约束务必记住这两条规则成对出现如果设置了macFactory却没有设置macCrypter或反过来构建时会直接抛出RuntimeException。Signature 同理。这个校验逻辑写在Goldfinger.Builder.ensureParamsValid()中源码见core/src/main/java/co/infinum/goldfinger/Goldfinger.java。优先级顺序当同时配置了多种 Factory 时CryptoObjectFactory源码见core/src/main/java/co/infinum/goldfinger/CryptoObjectFactory.java会按Cipher → Mac → Signature的顺序优先选用 Cipher所以实际项目中保持单一类型最不容易出错。另外提醒一点自定义 Factory 时创建 Cipher/Mac/Signature 失败要记得返回null库内部会将此视为CryptoObjectInitException并回调onError这是接口约定好的错误处理通道不要抛出未捕获的异常。总结Android-Goldfinger 通过Builder把加解密逻辑做成了高度可插拔的架构Factory 管生成、Crypter 管运算、CrypterProxy管路由三者解耦清晰源码量不大非常适合作为学习 Android 生物识别与密钥管理的范本。掌握自定义 Factory 与 Crypter 之后无论是更换加密算法、对接后端格式还是实现指纹 PIN双通道登录你都能轻松驾驭。如果你需要更复杂的认证流程还可以关注项目的 Rx 模块源码见rx/src/main/java/co/infinum/goldfinger/rx/RxGoldfinger.java它以响应式风格封装了同样的能力。动手改造之前记得先通读core/src/main/java/co/infinum/goldfinger/crypto/impl/下的三个默认实现你的自定义方案会在它们的肩膀上走得更稳。【免费下载链接】Android-GoldfingerAndroid library to simplify Biometric authentication implementation.项目地址: https://gitcode.com/gh_mirrors/an/Android-Goldfinger创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表