package Ġeu . kan ade . t ach iy omi . extension . zh . pic ac omic Ċ Ċ import Ġjavax . crypto . Mac Ċ import Ġjavax . crypto . spec . SecretKey Spec Ċ Ċ // Ġcopy Ġfrom Ġhttps :// github . com / cz p 3 0 0 9 / pic ac omic - api Ċ private Ġconst Ġval Ġalgorithm Ġ= Ġ" H mac SHA 2 5 6 " Ċ Ċ private Ġtype alias ĠMac Result Ġ= ĠByteArray Ċ Ċ internal Ġfun Ġhmac SHA 2 5 6 ( key : ĠString , Ġdata : ĠString ) Ġ= ĊĠĠĠ ĠMac . getInstance ( algorithm ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( SecretKey Spec ( key . toByteArray (), Ġalgorithm )) ĊĠĠĠ Ġ}. do Final ( data . toByteArray ()) Ġas ĠMac Result Ċ Ċ @ Suppress (" Spell Checking Inspection ") Ċ private Ġval Ġhex Table Ġ= Ġ" 0 1 2 3 4 5 6 7 8 9 abcdef ". toCharArray () Ċ Ċ @ Opt In ( Experimental Unsigned Types :: class ) Ċ internal Ġfun ĠMac Result . convert ToString () Ġ= Ġbuild String ( size Ġ* Ġ 2 ) Ġ{ ĊĠĠĠ Ġthis @ convert ToString . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġit . to U Byte (). toInt () ĊĠĠĠĠĠĠĠ Ġappend ( hex Table [ value Ġ ush r Ġ 4 ]) ĊĠĠĠĠĠĠĠ Ġappend ( hex Table [ value Ġand Ġ 0 x 0 f ]) ĊĠĠĠ Ġ} Ċ } Ċ