永发信息网

怎么认证安卓设备唯一性?

答案:5  悬赏:40  手机版
解决时间 2021-01-31 08:19
怎么认证安卓设备唯一性?
最佳答案
目前业内最有效的方式是利用数字联盟的可信ID。数盟提供该产品及配套 ,在移动APP推广过程中,为每台激活该APP的移动设备生成一个唯一的ID,统一管理,相当于是认证了该设备的身份。如果该安卓设备是改码手机或者开小号,可信ID能够鉴别,而虚拟机、模拟器之类则可以100%查杀。
全部回答
前段时间项目需要一个功能,就是在操作完某一个逻辑之后返回给客户一个红包,安全校验团队需要我们提供android设备的唯一标示,起初直接通过获取设备的imei号传给了server端,后台公司云迹监控发现,有些设备的imei号是0000000000000000,这样失去了设备唯一性验证的功能,第二个版本做了一个修复,除了获取imei号之外还新增了AndrdoiId的处理,不过悲剧的是android 设备实在是太多太杂了,仅仅通过这两个维度去确定设备的唯一性还是有一些漏洞的,最终我们的解决方案是尽量多的获取与设备相关的信息,最后做一个MD5数字加签,基本满足了这个需求 [java] view plaincopy package com.suning.mobile.epa; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.content.Context; import android.os.Build; import android.provider.Settings.Secure; import android.telephony.TelephonyManager; public class DeviceFactoty { // buildId public String m_szDevIDShortMaker() { String m_szDevIDShort = "35"; m_szDevIDShort += Build.BOARD.length() % 10 + Build.BRAND.length() % 10 + Build.CPU_ABI.length() % 10 + Build.DEVICE.length() % 10 + Build.DISPLAY.length() % 10 + Build.HOST.length() % 10 + Build.ID.length() % 10 + Build.MANUFACTURER.length() % 10 + Build.MODEL.length() % 10 + Build.PRODUCT.length() % 10 + Build.TAGS.length() % 10 + Build.TYPE.length() % 10 + Build.USER.length() % 10 + ""; return m_szDevIDShort; } public String currentDeviceMark(Context context) { final TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); final String tmDevice, tmSerial, androidId; tmDevice = "" + tm.getDeviceId(); tmSerial = "" + tm.getSimSerialNumber(); androidId = "" + android.provider.Settings.Secure.getString(EPApp.getApp() .getContentResolver(), Secure.ANDROID_ID); String serial = ""; if (Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO){ serial = Build.SERIAL; } String m_szLongID = tmDevice + tmSerial + androidId + serial + m_szDevIDShortMaker(); MessageDigest m = null; try { m = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } m.update(m_szLongID.getBytes(), 0, m_szLongID.length()); // get md5 bytes byte p_md5Data[] = m.digest(); // create a hex string String m_szUniqueID = new String(); for (int i = 0; i < p_md5Data.length; i++) { int b = (0xFF & p_md5Data[i]); // if it is a single digit, make sure it have 0 in front (proper padding) if (b <= 0xF) m_szUniqueID += "0"; // add number to string m_szUniqueID += Integer.toHexString(b); } // hex string to uppercase return m_szUniqueID = m_szUniqueID.toUpperCase(); } }
数盟模块的探针程序,不依赖操作系统反馈的方式,独立获取设备信息,不受任何劫持程序的影响保证设备信息的准确有效。
通过对海量数据的分析,数盟发现手机内特定传感器信息出现群体近似表现,并在与其他参数交叉验证,将能够快速有效的判别出造假行为。数盟特别针对近距离传感器以及运动传感器的行为进行了模型创建,并加入横向数据比对,使造假者无所遁形。
通过imei来判定,是国际移动设备标识的缩写,imei由15位数字组成。 imei是手机的唯一识别号码。我们从这个缩写的全称中来分析它的含义: “移动设备”就是手机,不包括便携式电脑。 “国际”这个字眼也表明了它可辨识的范围是全球,即全球范围内imei不会重复。 “身份”表明了它的作用,是辨识不同的手机;一机一号,类似于人的身份证号。 “码”字又说明它是一串编号,常称为手机的“串号”、“电子串号”。 手机在生产时,就被赋予一个imei。 手机的imei,就如同公民身份证号,一部手机对应一个全球唯一的15位身份串号,将逐渐成为识别手机归属和性质的权威标志。 如果手机丢失,通过运营商将该手机的imei列入黑名单,该手机将被禁止使用,这样丢失的手机就不能用了。 imei数据库具有白名单和黑名单功能,录入失窃和遗失手机的国际移动设备识别码(imei),便可立马知晓手机来例及归属,对于购买手机(尤其是购买二手手机)的消费者提供查询参考,为避免购买来例不明的手机遭受财产损失。同时,电信运营商对于数据库黑名单中的手机,拒绝提供入网服务,如将数据库黑名单提交到全球移动通信系统协会的imei数据库,可更有效防止跨境批量销售非法取得被盗手机的发生。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么我家电脑早上网速快,晚上却卡得要命
TIMPSON(华润五彩城购物中心西区)地址好找么
目前,世界各地存在着许多经济组织,它们一般
经典花卉在什么地方啊,我要过去处理事情
哪个网站可以知道接下来的动漫新番
施柏丽洗衣(清毛社区卫生服务站西北)地址在什
澳洲墨尔本寄邮政小包到中国广州要多久
从杭州到景宁县要多少时间啊?
请问农村喊的黄沙是什么岩石,化学成分是什么
高中数学三角函数和解三角形的公式多吗?有哪
【团歌】关于团歌的使用下列表述错误的是()
午餐可以不吃吗?
花千骨中小月把妖神之力转给小骨是对她好吗?
“梁上有双燕,翩翩雄与雌。……青虫不易捕,
这个版本的《假如给我三天光明》的好段 精彩
推荐资讯
亚洲园地址有知道的么?有点事想过去
怎样在STEAM上启动杀戮地带
我买的苏泊尔智能电压力锅,用了一年后,连接
为什么电脑没有ab盘
怎么揉方向盘啊,教练让单手揉方向盘转弯,但
解不定积分,我刚学①∫1/根号下(1+x²)
马自达6顶配2010年车8万公里不带牌照能卖多少
MK19榴弹发射器能否从空中击毁敌军战车?坦克
17.35换的win7系统,一直卡到65%,应该没有坏
2020年高分拔尖提优训练六年级英语下册江苏版
毛坯房租给别人住了,后来装修自己住有风水讲
这个月20号晚上,在深圳东方亮彩公司门口有一
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?