一.需求场景

在实际的开发工作过程中,我们经常会遇到过这样一个需求,就是客户要求我们的APP功能使用之前必须具备一定的密钥认证机制。现在是互联网时代,一般我们常规的做法都是建立起自己系统平台的用户体系,客户端通过用户名和密码去登录,以实现该需求。但是如果我们的APP目前不需要联网,没有自己的用户体系呢?换言之我们的APP需要进行离线认证使用,既然是离线认证,那意味着我们的认证过程必须存在于前端自己的项目之中,那就存在被破解的风险。众所周知,现在的反编译工具很多很强大,反编译一个未加固的APP仅仅只是一瞬间的事(实际上即使是加固了也可以被破解),道高一尺魔高一丈,那么我们只能是增加APP被反编译破解的难度,本篇提供一种方案供参考,核心就是将认证过程放在so文件中实现,以提高安全性。

二.设计分析

通过调用so文件完成整个激活认证过程,将认证过程放在C/C++代码中进行,增加程序被反编译破解的难度,提高程序代码隐蔽性。

管理者保管激活码生成工具,为用户生成APP激活码。

三.实现步骤

1.使用APP生成待激活二维码;

2.使用生成激活码APP(见目录:生成激活码工具)扫描待激活二维码,生成激活码;

                    

3.复制激活码,在APP中粘贴输入激活码,点击按钮进行激活验证,验证成功方可使用APP。

               

源码路径:

该案例源码已上传至GitHub,地址:GitHub - g-HJY/ActivationCodeApp: 使用so库实现离线激活App机制。包含:生成待激活二维码APP、扫描待激活二维码生成激活验证码APP

好了,到此就介绍完毕了,本篇主要是为APP本地离线认证提供一种具备一定安全性的解决思路,感谢大家的阅读,拜拜。

结尾顺便分享下我在Github上的一个蓝牙开发开源作品:

Java语言版本地址:GitHub - g-HJY/HBluetooth: 封装了支持Android蓝牙(经典蓝牙或低功耗蓝牙)扫描,连接,以及通信的库。附带使用例子。
Kotlin语言版本地址:GitHub - g-HJY/Kotlin-HBluetooth: Kotlin语言版本:封装了支持Android蓝牙(经典蓝牙和低功耗蓝牙)扫描,连接,以及通信的库。附带使用例子。

相关csdn篇章:分享我的Android蓝牙开源作品—HBluetooth__H_JY的博客-CSDN博客

特别声明:

本开源案例仅以提供离线认证的设计思想和实现方法参考为目的,且激活码生成工具已公开使用,不承诺其安全性。若您在项目中使用该认证库,因被破解造成任何损失,开源库提供者概不负责。

意见和建议:

真实生产过程中建议还是通过联网+用户体系认证的方式来实现,即认证过程由服务端处理,可以更好地解决安全性问题。

Android应用本地离线激活认证方案—so文件授权认证相关推荐

  1. python-管家婆-接口获取授权认证码、利用授权认证码获取token信息、刷新token、部分接口调用

    最近在对接管家婆,文档上只有 java php .net 的例子,写了一个python的例子,里面部分数据按需填写. 加解密代码借鉴于知乎 python里面json对象转字符串,分号和逗号默认会有空格 ...

  2. 分布式认证方案-基于session的认证方式

    在分布式的环境下,基于session的认证会出现一个问题,每个应用服务都需要在session中存储用户身份信息,通过负载均衡将本地的请求分配到另一个应用服务需要将session信息带过去,否则会重新认 ...

  3. 分布式认证方案-基于token的认证方式

    基于token的认证方式,服务端不用存储认证数据,易维护扩展性强, 客户端可以把token 存在任意地方,并且可以实现web和app统一认证机制.其缺点也很明显,token由于自包含信息,因此一般数据 ...

  4. 华为 H3C 配置 Portal认证 mac-trigger快速认证 Mac无感知认证 Radius认证计费 对接 外部Portal认证计费系统 案例

    华为 H3C 配置 Portal认证 mac-trigger快速认证 Mac无感知认证 Radius认证计费 对接 外部Portal认证计费系统 案例 介绍: OpenPortal网络准入认证计费系统 ...

  5. 华为外部Portal认证 Radius认证计费 实现基于Mac快速认证的Mac无感知认证和结合CAS单点登录统一认证平台和AD域LDAP对接配置

    华为外部Portal认证 Radius认证计费 实现基于Mac快速认证的Mac无感知认证 结合CAS单点登录统一认证平台 AD域LDAP对接配置 实现用户名密码实名认证 访客短信认证 二维码扫码 钉钉 ...

  6. 华为 配置 MAC认证优先 Portal认证 Mac无感知快速认证 Radius认证计费 对接 外部 Portal认证计费系统 案例

    华为 配置 MAC认证优先 Portal认证 Mac无感知快速认证 Radius认证计费 对接 外部 Portal认证计费系统 案例 介绍: OpenPortal网络准入认证计费系统,支持用户名密码认 ...

  7. Android离线人脸识别方案对比

    Android 离线人脸识别方案对比总结 文章目录 Android 离线人脸识别方案对比总结 百度.腾讯.阿里.Face++.商汤等人脸识别 虹软人脸识别 OpenCV 人脸识别 中科视拓(Seeta ...

  8. Android 11 + 使用阿里“金融级实人认证方案”闪退

    官方文档:Android接入 1.apk版本信息 2.动态权限获取 implementation 'com.github.tbruyelle:rxpermissions:0.12' 3.获取手机状态( ...

  9. android o 编译及运行,【转】实践最有效的提高Android Studio运行、编译速度方案

    原文:https://blog.csdn.net/xwh_1230/article/details/60961723 实践最有效的提高Android Studio运行.编译速度方案 最有效提升Andr ...

最新文章

  1. dataset__getitem___PyTorch源码解析与实践(1):数据加载Dataset,Sampler与DataLoader
  2. windows下安装composer抛出Composer\Downloader\TransportException异常解决办法
  3. SqlCommandBuilder
  4. 附件文件无法保存到服务器,可能是目录属性设置问题,请与管理员联系,Discuz不能上传过大文件的解决办法...
  5. ionic3 隐藏子页面tabs
  6. dev gridview 打印列数过多_R语言:如何将多张统计图绘制在一张上面
  7. 【计算几何】线段相交
  8. Flutter 悬浮按钮 FloatingActionButton 的详细配置使用
  9. 理解eos区块链的eosio.token合约
  10. vs2005新建项目中没有ASP.NET WEB应用程序的解决方法
  11. 管家婆系统怎么创建提醒服务器,管家婆辉煌Ⅱ++10.1 -管家婆软件官方网站
  12. 山区建小学(递推,区间dp)
  13. 第二十三章 天猫精灵控制ESP32(wifi+tcp+json)
  14. DNS错误是什么意思?
  15. Maven 报错:Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:2.6
  16. 6.1 PowerBI系列之DAX函数专题 - filter,calculate,calculatetable
  17. 2019软科中国【网络空间安全】专业大学排名
  18. android移动支付——PayPal支付,2021我的Android路要怎么走
  19. 关于MSDN网站的一个疑问
  20. 本人40多岁大龄码农,国内已经没人要了,被优化后去日本工作,一人上班轻松养活三口之家!...

热门文章

  1. 最新520表白HTML源码+实现3D动态相册
  2. 第一方物流、第二方物流、第三方物流、第四方物流
  3. 如何通过点击iPhone的背面拍摄屏幕截图
  4. 嗅探HTTP网页用户账户密码
  5. CCPC-Wannafly Winter Camp 总结
  6. mysql源代码解析经典类——Field类
  7. logstash grok正则案例
  8. 通过自定义csl文件解决Mendeley使用GB/T 7714-2005时出现“等”而不是et al的问题
  9. 机器学习实战教程(2):K-近邻算法(史诗级干货长文)
  10. NOI模拟 五彩斑斓