package Ġcom . my ether wallet . me w connect . core . utils . crypto Ċ Ċ import Ġorg . sp ong ycastle . crypto . digest s . SHA 2 5 6 Digest Ċ import Ġorg . sp ong ycastle . crypto . macs . H Mac Ċ import Ġorg . sp ong ycastle . crypto . params . Key Parameter Ċ import Ġorg . sp ong ycastle . j ca j ce . provider . digest . K ecc ak Ċ import Ġorg . sp ong ycastle . j ca j ce . provider . digest . SHA 3 Ċ import Ġorg . sp ong ycastle . util . en coders . Hex Ċ import Ġjava . security . Message Digest Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠB Art Well Ġon Ġ 1 7 . 0 7 . 2 0 1 8 . Ċ Ġ*/ Ċ Ċ object ĠCrypto Utils Ġ{ ĊĊĠĠĠ Ġfun Ġsha 3 String ( input : ĠByteArray ): ĠString Ġ= ĠHex . to HexString ( sha 3 Bytes ( input )) ĊĊĠĠĠ Ġfun Ġsha 3 Bytes ( input : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdigest Ġ= ĠSHA 3 . Digest 2 5 6 () ĊĠĠĠĠĠĠĠ Ġdigest . update ( input ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdigest . digest () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġke cc ak 2 5 6 String ( input : ĠByteArray ) Ġ= ĠHex . to HexString ( ke cc ak 2 5 6 Bytes ( input )) ĊĊĠĠĠ Ġfun Ġke cc ak 2 5 6 Bytes ( input : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdigest Ġ= ĠK ecc ak . Digest 2 5 6 () ĊĠĠĠĠĠĠĠ Ġdigest . update ( input ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdigest . digest () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsha 5 1 2 ( data : ĠByteArray ): ĠByteArray Ġ= ĠMessage Digest . getInstance (" SHA - 5 1 2 "). digest ( data ) ĊĊĠĠĠ Ġfun Ġh Mac ( data : ĠByteArray , Ġkey : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdigest Ġ= ĠSHA 2 5 6 Digest () ĊĠĠĠĠĠĠĠ Ġval Ġh Mac Ġ= ĠH Mac ( digest ) ĊĠĠĠĠĠĠĠ Ġh Mac . init ( Key Parameter ( key )) ĊĠĠĠĠĠĠĠ Ġh Mac . reset () ĊĠĠĠĠĠĠĠ Ġh Mac . update ( data , Ġ 0 , Ġdata . size ) ĊĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠByteArray ( 3 2 ) ĊĠĠĠĠĠĠĠ Ġh Mac . do Final ( out , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġout ĊĠĠĠ Ġ} Ċ } Ċ