package Ġno . ro ed t . hy pers ys . login Ċ Ċ import Ġno . ro ed t . token . Secret Factory Ċ import Ġjava . util . Base 6 4 Ċ import Ġjavax . annotation . Post Construct Ċ import Ġjavax . crypto . Cipher Ċ import Ġjavax . crypto . SecretKey Ċ import Ġjavax . crypto . spec . Iv Parameter Spec Ċ import Ġjavax . crypto . spec . SecretKey Spec Ċ import Ġjavax . enterprise . context . Dependent Ċ Ċ @ Dependent Ċ class ĠAES Util ( val Ġsecret Factory : ĠSecret Factory ) Ġ{ ĊĊĠĠĠ Ġval Ġalgorithm : ĠString Ġ= Ġ" AES / CBC / PKCS 5 Padding " ĊĠĠĠ Ġlateinit Ġvar Ġkey : ĠSecret Key ĊĊĠĠĠ Ġ@ Post Construct ĊĠĠĠ Ġfun Ġset Key () Ġ{ ĊĠĠĠĠĠĠĠ Ġkey Ġ= ĠSecret KeySpec ( secret Factory . get Encryption Key (). encode To ByteArray (), Ġ" AES ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecrypt ( cipher Text : ĠString ): ĠString Ġ= ĠCipher . getInstance ( algorithm ) ĊĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġit . init ( Cipher . DE CRYPT _ MODE , Ġkey , Ġget IV ( cipher Text )) Ġ} ĊĠĠĠĠĠĠĠ Ġ. do Final ( decode ( cipher Text )) ĊĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠString ( it ) Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget IV ( cipher Text : ĠString ) Ġ= ĠI v Parameter Spec ( Base 6 4 . get Decoder (). decode ( cipher Text . split (": ")[ 0 ])) ĊĊĠĠĠ Ġprivate Ġfun Ġdecode ( cipher Text : ĠString ) Ġ= ĠBase 6 4 . get Decoder (). decode ( cipher Text . split (": ")[ 1 ]) Ċ } Ċ