生活随笔
收集整理的這篇文章主要介紹了
Android设备唯一性判断
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
前段時(shí)間項(xiàng)目需要一個(gè)功能,就是在操作完某一個(gè)邏輯之后返回給客戶一個(gè)紅包,安全校驗(yàn)團(tuán)隊(duì)需要我們提供android設(shè)備的唯一標(biāo)示,起初直接通過獲取設(shè)備的imei號(hào)傳給了server端,后臺(tái)公司云跡監(jiān)控發(fā)現(xiàn),有些設(shè)備的imei號(hào)是0000000000000000,這樣失去了設(shè)備唯一性驗(yàn)證的功能,第二個(gè)版本做了一個(gè)修復(fù),除了獲取imei號(hào)之外還新增了AndrdoiId的處理,不過悲劇的是android 設(shè)備實(shí)在是太多太雜了,僅僅通過這兩個(gè)維度去確定設(shè)備的唯一性還是有一些漏洞的,最終我們的解決方案是盡量多的獲取與設(shè)備相關(guān)的信息,最后做一個(gè)MD5數(shù)字加簽,基本滿足了這個(gè)需求
[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?{?????????????????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());????????????????????byte?p_md5Data[]?=?m.digest();????????????????????String?m_szUniqueID?=?new?String();??????????for?(int?i?=?0;?i?<?p_md5Data.length;?i++)?{??????????????int?b?=?(0xFF?&?p_md5Data[i]);????????????????????????????if?(b?<=?0xF)??????????????????m_szUniqueID?+=?"0";????????????????????????????m_szUniqueID?+=?Integer.toHexString(b);??????????}???????????return?m_szUniqueID?=?m_szUniqueID.toUpperCase();????????}??} ?
總結(jié)
以上是生活随笔為你收集整理的Android设备唯一性判断的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。