package Ġtop . z be boy . isy . web . util . weixin Ċ Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . security . Message Digest Ċ import Ġjava . util .* Ċ import Ġkotlin . experimental . and Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġz be boy Ġ 2 0 1 7 - 1 1 - 2 0 Ġ. Ċ Ġ* Ġ è®¡ç®Ĺ åħ¬ ä¼Ĺ å¹³åı° çļĦ æ¶Īæģ¯ çŃ¾åĲį æİ¥åı£ . Ċ Ġ**/ Ċ class ĠSHA 1 Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( SHA 1 :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠçĶ¨ SHA 1 ç®Ĺæ³ķ çĶŁæĪĲ å®īåħ¨ çŃ¾åĲį ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtoken ĠĠĠĠ Ġ ç¥¨ æį® ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtimestamp Ġ æĹ¶éĹ´ æĪ ³ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġnonce ĠĠĠĠ Ġ éļıæľº åŃĹç¬¦ä¸² ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġencrypt ĠĠ Ġ å¯Ĩ æĸĩ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ å®īåħ¨ çŃ¾åĲį ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠA es Exception ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Aes Exception :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġget SHA 1 ( token : ĠString , Ġtimestamp : ĠString , Ġnonce : ĠString , Ġencrypt : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠarrayOf ( token , Ġtimestamp , Ġnonce , Ġencrypt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åŃĹç¬¦ä¸² æİĴåºı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrays . sort ( array ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( array [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġsb . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSHA 1 çŃ¾åĲį çĶŁæĪĲ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmd Ġ= ĠMessage Digest . getInstance (" SHA - 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmd . update ( str . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdigest Ġ= Ġmd . digest () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhex str Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsha Hex : String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdigest . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsha Hex Ġ= ĠInteger . to HexString (( digest [ i ] Ġand Ġ 0 xFF . to Byte ()). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sha Hex . length Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhex str . append ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhex str . append ( sha Hex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhex str . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" SHA Ġerror Ġ: Ġ{}", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠA es Exception ( Aes Exception . Compute Signature Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }