/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠShe T ie Jun Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġme . s het j . base . tools . app Ċ Ċ import Ġjava . io . IOException Ċ import Ġjava . security . General Security Exception Ċ import Ġjava . security . Message Digest Ċ import Ġjava . util . TreeMap Ċ Ċ /** Ċ Ġ* Ġ çŃ¾åĲį ç®Ĺæ³ķ Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ åģĩ è®¾ åıĤ ä¸İ åıĤæķ° çŃ¾åĲį è®¡ç®Ĺ çļĦ è¯·æ±Ĥ åıĤæķ° åĪĨåĪ« æĺ¯ âĢľ k 1 âĢĿ ãĢģ âĢľ k 2 âĢĿ ãĢģ âĢľ k 3 âĢĿï¼Į å®ĥä»¬ çļĦåĢ¼ åĪĨåĪ« æĺ¯ âĢľ v 1 âĢĿ ãĢģ âĢľ v 2 âĢĿ ãĢģ âĢľ v 3 âĢĿï¼Į åĪĻ åıĤæķ° çŃ¾åĲį è®¡ç®Ĺ æĸ¹æ³ķ å¦Ĥä¸ĭ ï¼ļ Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġå°Ĩ è¯·æ±Ĥ åıĤæķ° æł¼å¼ı åĮĸ ä¸º âĢľ key = value âĢĿ æł¼å¼ı ï¼Į åį³ âĢľ k 1 = v 1 âĢĿ ãĢģ âĢľ k 2 = v 2 âĢĿ ãĢģ âĢľ k 3 = v 3 âĢĿ ï¼Ľ Ċ Ġ* Ġå°Ĩ æł¼å¼ı åĮĸ å¥½çļĦ åıĤæķ° éĶ® åĢ¼ å¯¹ ä»¥ åŃĹåħ¸ åºı åįĩ åºı æİĴ åĪĹ åĲİ ï¼Į æĭ ¼ æİ¥ åľ¨ ä¸Ģèµ· ï¼Į åį³ âĢľ k 1 = v 1 k 2 = v 2 k 3 = v 3 âĢĿ ï¼Ľ Ċ Ġ* Ġåľ¨ æĭ ¼ æİ¥ å¥½çļĦ åŃĹç¬¦ä¸² æľ« å°¾ è¿½åĬł ä¸Ĭ ä¸İ æľįåĬ¡åĻ¨ çº¦ å®ļçļĦ åºĶçĶ¨ secret åıĤæķ° åĢ¼ ï¼Ľ Ġä¸Ĭ è¿° åŃĹç¬¦ä¸² çļĦ MD 5 åĢ¼ åį³ ä¸º çŃ¾åĲį çļĦåĢ¼ ãĢĤ Ċ Ġ*/ Ċ object ĠSign Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çŃ¾åĲį çĶŁæĪĲ ç®Ĺæ³ķ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġparams Ġ< String ></ String >, String > Ġparams Ġè¯·æ±Ĥ åıĤæķ° éĽĨ ï¼Į æīĢæľī åıĤæķ° å¿ħé¡» å·² è½¬æį¢ ä¸º åŃĹç¬¦ä¸² ç±»åŀĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġsecret Ġ Ġsecret Ġ çŃ¾åĲį å¯Ĩ éĴ¥ ĊĠĠĠĠ Ġ* Ġ@ return Ġ çŃ¾åĲį ĊĠĠĠĠ Ġ* Ġ@ throws ĠIOException Ġ è¾ĵåħ¥ è¾ĵåĩº å¼Ĥå¸¸ ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġget Signature ( params : ĠHashMap < String , ĠString >, Ġsecret : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ åħĪ å°Ĩ åıĤæķ° ä»¥ åħ¶ åıĤæķ° åĲį çļĦ åŃĹåħ¸ åºı åįĩ åºı è¿Ľè¡Į æİĴåºı ĊĠĠĠĠĠĠĠ Ġval Ġsorted Params Ġ= ĠTreeMap ( params ) ĊĠĠĠĠĠĠĠ Ġval Ġentry s Ġ= Ġsorted Params . entries ĊĊĠĠĠĠĠĠĠ Ġ// Ġ éģįåİĨ æİĴåºı åĲİçļĦ åŃĹåħ¸ ï¼Į å°Ĩ æīĢæľī åıĤæķ° æĮī " key = value " æł¼å¼ı æĭ ¼ æİ¥ åľ¨ ä¸Ģèµ· ĊĠĠĠĠĠĠĠ Ġval Ġbase String Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġentry s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase String . append ( key ). append (" =" ). append ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbase String . append ( secret ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġä½¿çĶ¨ MD 5 å¯¹ å¾ħ çŃ¾åĲį ä¸² æ±Ĥ çŃ¾ ĊĠĠĠĠĠĠĠ Ġval Ġbytes : ĠByteArray ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmd 5 Ġ= ĠMessage Digest . getInstance (" MD 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Ġ= Ġmd 5 . digest ( base String . toString (). toByteArray ( charset (" UTF - 8 "))) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠGeneral Security Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġå°Ĩ MD 5 è¾ĵåĩº çļĦ äºĮ è¿ĽåĪ¶ ç»ĵæŀľ è½¬æį¢ ä¸º å°ı åĨĻ çļĦ åįģ åħŃ è¿ĽåĪ¶ ĊĠĠĠĠĠĠĠ Ġval Ġsign Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġfor Ġ( a Byte Ġin Ġbytes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhex Ġ= ĠInteger . to HexString ( a Byte . toInt () Ġand Ġ 0 xFF ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hex . length Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsign . append (" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign . append ( hex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsign . toString () ĊĠĠĠ Ġ} Ċ } Ċ