/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 2 ĠThe ĠC yan ogen Mod ĠProject Ċ Ġ* Ċ Ġ* Ġ* ĠLicensed Ġunder Ġthe ĠGNU ĠGPL v 2 Ġlicense Ċ Ġ* Ċ Ġ* ĠThe Ġtext Ġof Ġthe Ġlicense Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile Ċ Ġ* Ġor Ġat Ġhttps :// www . gnu . org / licenses / gpl - 2 . 0 . txt Ċ Ġ*/ Ċ package Ġcom . ar jan v lek . oxy gen updater . utils Ċ Ċ import Ġcom . ar jan v lek . oxy gen updater . exceptions . O xygen Updater Exception Ċ import Ġcom . ar jan v lek . oxy gen updater . utils . Logger . log Error Ċ import Ġjava . security . Message Digest Ċ import Ġjava . security . NoSuch AlgorithmException Ċ Ċ internal Ġobject ĠMD 5 Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" MD 5 " ĊĊĠĠĠ Ġfun Ġcalculate MD 5 ( deviceId : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate ĠMD 5 ĠHash ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdigest Ġ= ĠMessage Digest . getInstance (" MD 5 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdigest . update ( deviceId . toByteArray ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Digest Ġ= Ġdigest . digest () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate ĠHex ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhex String Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( b Ġin Ġmessage Digest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh Ġ= ĠStringBuilder ( Integer . to HexString ( 0 xFF Ġand Ġb . toInt ())) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( h . length Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh . insert ( 0 , Ġ" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhex String . append ( h ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhex String . toString () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch AlgorithmException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Error ( TAG , ĠO xygen Updater Exception ( e . message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ