package Ġstd . gun fz . key _ hash Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . Package Info Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . util . Base 6 4 Ċ import Ġandroid . util . Log Ċ import Ġjava . security . Message Digest Ċ import Ġjava . security . NoSuch AlgorithmException Ċ Ċ class ĠKey Hash Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠGET _ KEY _ HASH Ġ= Ġ" getKey Hash " ĊĠĠĠĠĠĠĠ Ġfun Ġprint Key Hash ( context : ĠContext , ĠpackageName : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġkey hash Ġ= Ġ""; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo : ĠPackage Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ= Ġ Ġcontext . package Manager . get Package Info ( packageName , ĠPackage Manager . GET _ SIGNATURE S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( signature Ġin Ġinfo . signatures ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmd : ĠMessage Digest Ġ= ĠMessage Digest . getInstance (" SHA ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmd . update ( signature . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsomething Ġ= ĠString ( Base 6 4 . encode ( md . digest (), Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// String Ġsomething Ġ= Ġnew ĠString ( Base 6 4 . encode Bytes ( md . digest ())); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" hash Ġkey ", Ġsomething ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey hash Ġ= Ġsomething ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e 1 : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" name Ġnot Ġfound ", Ġe 1 . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch AlgorithmException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" no Ġsuch Ġan Ġalgorithm ", Ġe . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" exception ", Ġe . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkey hash ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }