package Ġk ib aan . android . util Ċ Ċ import Ġandroid . util . Base 6 4 Ċ import Ġjava . util .* Ċ import Ġjavax . crypto . Cipher Ċ import Ġjavax . crypto . spec . Iv Parameter Spec Ċ import Ġjavax . crypto . spec . SecretKey Spec Ċ Ċ /** Ċ Ġ* ĠAES æļ Ĺ åı· åĮĸ ãģ® ãĥ ¦ ãĥ¼ãĥ Ĩ ãĤ£ ãĥªãĥĨãĤ£ ãĥ¼ Ċ Ġ* Ċ Ġ* Ġ é į µ éķ· : Ġ 1 2 8 ãĥĵ ãĥĥãĥĪ Ċ Ġ* ĠIV éķ· : Ġ 1 2 8 ãĥĵ ãĥĥãĥĪ Ċ Ġ* Ġæ ļ Ĺ åı· åĪ©çĶ¨ ãĥ¢ ãĥ¼ãĥī : ĠCBC Ċ Ġ* Ġãĥĳ ãĥĩãĤ£ ãĥ³ãĤ° æĸ¹å¼ı ï¼ļ PKCS 5 Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠY am am oto ĠKe ita Ġon Ġ 2 0 1 8 / 0 8 / 1 1 . Ċ Ġ*/ Ċ object ĠAES Utils Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠAL G ORITHM Ġ= Ġ" AES " ĊĠĠĠ Ġprivate Ġconst Ġval ĠCBC _ METHOD Ġ= Ġ" AES / CBC / PKCS 5 Padding " ĊĠĠĠ Ġprivate Ġval ĠCHARSET Ġ= ĠChar sets . UTF _ 8 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç° ¡ æĺĵ çļĦãģª æļ Ĺ åı· åĮĸ ãĢĤ æļ Ĺ åı· åĮĸ ãģĹãģŁ Base 6 4 ãģ® æĸĩåŃĹåĪĹ ãĤĴ è¿Ķ ãģĻ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconvenient Encrypt ( src : ĠString ?, Ġsecret Key : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġraw String Ġ= Ġsrc Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsrc Data Ġ= Ġraw String . toByteArray ( CHARSET ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Data Ġ= Ġto Bytes ( secret Key , Ġbyte Size Ġ= Ġ 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiv Data Ġ= Ġto Bytes ( secret Key , Ġbyte Size Ġ= Ġ 1 6 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencrypted Ġ= Ġencrypt ( src Ġ= Ġsrc Data , Ġkey Ġ= Ġkey Data , Ġiv Ġ= Ġiv Data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase 6 4 . encode ToString ( encrypted , ĠBase 6 4 . DEFAULT ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( java Class . simple Name , Ġ" Failed Ġto Ġencrypt ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ` con ven ient Encrypt ` ãģ§ æļ Ĺ åı· åĮĸ ãģĹãģŁ ãĥĩãĥ¼ãĤ¿ ãĤĴ å¾ © åı· åĮĸ ãģĻãĤĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconvenient Decrypt ( encoded Base 6 4 : ĠString ?, Ġsecret Key : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase 6 4 Ġ= Ġencoded Base 6 4 Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencrypted Data Ġ= ĠBase 6 4 . decode ( base 6 4 , ĠBase 6 4 . DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Data Ġ= Ġto Bytes ( secret Key , Ġbyte Size Ġ= Ġ 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiv Data Ġ= Ġto Bytes ( secret Key , Ġbyte Size Ġ= Ġ 1 6 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecrypted Ġ= Ġdecrypt ( encoded Ġ= Ġencrypted Data , Ġkey Ġ= Ġkey Data , Ġiv Ġ= Ġiv Data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠString ( de crypted , ĠCHARSET ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( java Class . simple Name , Ġ" Failed Ġto Ġdecrypt ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ ļ Ĺ åı· åĮĸ ãģĻãĤĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġencrypt ( src : ĠByteArray , Ġkey : ĠByteArray , Ġiv : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance ( CBC _ METHOD ) ĊĠĠĠĠĠĠĠ Ġval Ġiv Spec Ġ= ĠI v Parameter Spec ( iv ) ĊĠĠĠĠĠĠĠ Ġval Ġkey Spec Ġ= ĠSecret KeySpec ( key , ĠAL G ORITHM ) ĊĊĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . ENCRYPT _ MODE , Ġkey Spec , Ġiv Spec ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcipher . do Final ( src ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¤ĩ åĲĪ åĮĸ ãģĻãĤĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġdecrypt ( encoded : ĠByteArray , Ġkey : ĠByteArray , Ġiv : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsecret Key Ġ= ĠSecret KeySpec ( key , ĠAL G ORITHM ) ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance ( CBC _ METHOD ) ĊĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . DE CRYPT _ MODE , Ġsecret Key , ĠI v Parameter Spec ( iv )) ĊĠĠĠĠĠĠĠ Ġreturn Ġcipher . do Final ( encoded ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ãĥ© ãĥ³ ãĥĢ ãĥł ãģª IV ãĤĴ çĶŁæĪĲ ãģĻãĤĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Random ByteArray (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠByteArray ( 1 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġrandom Ġ= ĠRandom () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdata . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom Int Ġ= Ġrandom . nextInt () Ġ% Ġ 1 2 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ i ] Ġ= Ġrandom Int . to Byte () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdata ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĸĩåŃĹåĪĹ ãĤĴæĮĩå®ļ ãĤµ ãĤ¤ãĤº ãģ® ByteArray ãģ« ãģĻãĤĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġto Bytes ( data : ĠString , Ġbyte Size : ĠInt ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠByteArray ( byte Size ) ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= Ġdata . toByteArray ( CHARSET ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġresult . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bytes . size Ġ<= Ġi ) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ i ] Ġ= Ġbytes [ i ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ Ċ }