Android应用本地离线激活认证方案—so文件授权认证
一.需求场景
在实际的开发工作过程中,我们经常会遇到过这样一个需求,就是客户要求我们的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文件授权认证相关推荐
- python-管家婆-接口获取授权认证码、利用授权认证码获取token信息、刷新token、部分接口调用
最近在对接管家婆,文档上只有 java php .net 的例子,写了一个python的例子,里面部分数据按需填写. 加解密代码借鉴于知乎 python里面json对象转字符串,分号和逗号默认会有空格 ...
- 分布式认证方案-基于session的认证方式
在分布式的环境下,基于session的认证会出现一个问题,每个应用服务都需要在session中存储用户身份信息,通过负载均衡将本地的请求分配到另一个应用服务需要将session信息带过去,否则会重新认 ...
- 分布式认证方案-基于token的认证方式
基于token的认证方式,服务端不用存储认证数据,易维护扩展性强, 客户端可以把token 存在任意地方,并且可以实现web和app统一认证机制.其缺点也很明显,token由于自包含信息,因此一般数据 ...
- 华为 H3C 配置 Portal认证 mac-trigger快速认证 Mac无感知认证 Radius认证计费 对接 外部Portal认证计费系统 案例
华为 H3C 配置 Portal认证 mac-trigger快速认证 Mac无感知认证 Radius认证计费 对接 外部Portal认证计费系统 案例 介绍: OpenPortal网络准入认证计费系统 ...
- 华为外部Portal认证 Radius认证计费 实现基于Mac快速认证的Mac无感知认证和结合CAS单点登录统一认证平台和AD域LDAP对接配置
华为外部Portal认证 Radius认证计费 实现基于Mac快速认证的Mac无感知认证 结合CAS单点登录统一认证平台 AD域LDAP对接配置 实现用户名密码实名认证 访客短信认证 二维码扫码 钉钉 ...
- 华为 配置 MAC认证优先 Portal认证 Mac无感知快速认证 Radius认证计费 对接 外部 Portal认证计费系统 案例
华为 配置 MAC认证优先 Portal认证 Mac无感知快速认证 Radius认证计费 对接 外部 Portal认证计费系统 案例 介绍: OpenPortal网络准入认证计费系统,支持用户名密码认 ...
- Android离线人脸识别方案对比
Android 离线人脸识别方案对比总结 文章目录 Android 离线人脸识别方案对比总结 百度.腾讯.阿里.Face++.商汤等人脸识别 虹软人脸识别 OpenCV 人脸识别 中科视拓(Seeta ...
- Android 11 + 使用阿里“金融级实人认证方案”闪退
官方文档:Android接入 1.apk版本信息 2.动态权限获取 implementation 'com.github.tbruyelle:rxpermissions:0.12' 3.获取手机状态( ...
- android o 编译及运行,【转】实践最有效的提高Android Studio运行、编译速度方案
原文:https://blog.csdn.net/xwh_1230/article/details/60961723 实践最有效的提高Android Studio运行.编译速度方案 最有效提升Andr ...
最新文章
- dataset__getitem___PyTorch源码解析与实践(1):数据加载Dataset,Sampler与DataLoader
- windows下安装composer抛出Composer\Downloader\TransportException异常解决办法
- SqlCommandBuilder
- 附件文件无法保存到服务器,可能是目录属性设置问题,请与管理员联系,Discuz不能上传过大文件的解决办法...
- ionic3 隐藏子页面tabs
- dev gridview 打印列数过多_R语言:如何将多张统计图绘制在一张上面
- 【计算几何】线段相交
- Flutter 悬浮按钮 FloatingActionButton 的详细配置使用
- 理解eos区块链的eosio.token合约
- vs2005新建项目中没有ASP.NET WEB应用程序的解决方法
- 管家婆系统怎么创建提醒服务器,管家婆辉煌Ⅱ++10.1 -管家婆软件官方网站
- 山区建小学(递推,区间dp)
- 第二十三章 天猫精灵控制ESP32(wifi+tcp+json)
- DNS错误是什么意思?
- Maven 报错:Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:2.6
- 6.1 PowerBI系列之DAX函数专题 - filter,calculate,calculatetable
- 2019软科中国【网络空间安全】专业大学排名
- android移动支付——PayPal支付,2021我的Android路要怎么走
- 关于MSDN网站的一个疑问
- 本人40多岁大龄码农,国内已经没人要了,被优化后去日本工作,一人上班轻松养活三口之家!...