package Ġcom . glo dan if . bluetooth chat . data . service Ċ Ċ import Ġjava . util .* Ċ import Ġjavax . crypto . Cipher Ċ import Ġjavax . crypto . spec . Iv Parameter Spec Ċ import Ġjavax . crypto . spec . SecretKey Spec Ċ Ċ object ĠCh Crypto { ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġaes Encrypt ( v : String , Ġsecret Key : String ) Ġ= ĠAES 2 5 6 . encrypt ( v , Ġsecret Key ) ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġaes Decrypt ( v : String , Ġsecret Key : String ) Ġ= ĠAES 2 5 6 . decrypt ( v , Ġsecret Key ) Ċ } Ċ Ċ private Ġobject ĠAES 2 5 6 { ĊĠĠĠ Ġprivate Ġval Ġenc order Ġ= ĠBase 6 4 . get Encoder () ĊĠĠĠ Ġprivate Ġval Ġdec order Ġ= ĠBase 6 4 . get Decoder () ĊĠĠĠ Ġprivate Ġfun Ġcipher ( op mode : Int , Ġsecret Key : String ): Cipher { ĊĠĠĠĠĠĠĠ Ġif ( secret Key . length Ġ!= Ġ 3 2 ) Ġthrow ĠRuntimeException (" SecretKey Ġlength Ġis Ġnot Ġ 3 2 Ġchars ") ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCipher . getInstance (" AES / CBC / PKCS 5 Padding ") ĊĠĠĠĠĠĠĠ Ġval Ġsk Ġ= ĠSecret KeySpec ( secret Key . toByteArray ( Charsets . UTF _ 8 ), Ġ" AES ") ĊĠĠĠĠĠĠĠ Ġval Ġiv Ġ= ĠI v Parameter Spec ( secret Key . substring ( 0 , Ġ 1 6 ). toByteArray ( Charsets . UTF _ 8 )) ĊĠĠĠĠĠĠĠ Ġc . init ( op mode , Ġsk , Ġiv ) ĊĠĠĠĠĠĠĠ Ġreturn Ġc ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġencrypt ( str : String , Ġsecret Key : String ): String { ĊĠĠĠĠĠĠĠ Ġval Ġencrypted Ġ= Ġcipher ( Cipher . ENCRYPT _ MODE , Ġsecret Key ). do Final ( str . toByteArray ( Charsets . UTF _ 8 )) ĊĠĠĠĠĠĠĠ Ġreturn ĠString ( enc order . encode ( encrypted )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġdecrypt ( str : String , Ġsecret Key : String ): String { ĊĠĠĠĠĠĠĠ Ġval Ġbyte Str Ġ= Ġdec order . decode ( str . toByteArray ( Charsets . UTF _ 8 )) ĊĠĠĠĠĠĠĠ Ġreturn ĠString ( cipher ( Cipher . DE CRYPT _ MODE , Ġsecret Key ). do Final ( byte Str )) ĊĠĠĠ Ġ} Ċ }