package Ġcommon Ċ Ċ import Ġsun . misc . BASE 6 4 Decoder Ċ import Ġsun . misc . BASE 6 4 Encoder Ċ Ċ import Ġjava . io . IOException Ċ import Ġjavax . crypto . Cipher Ċ import Ġjavax . crypto . spec . Iv Parameter Spec Ċ import Ġjavax . crypto . spec . SecretKey Spec Ċ Ċ import Ġorg . apache . commons . codec . binary . Base 6 4 Ċ import Ġjava . security . Message Digest Ċ import Ġjava . util .* Ċ import Ġjavax . crypto . SecretKey Factory ĊĊĊ Ċ object ĠStringUtils Ġ{ ĊĠĠĠ Ġ// Ġkeys Ġfor Ġencryption / de cryption ĊĠĠĠ Ġvar Ġaes _ key 0 Ġ= Ġ" J UT RF GH y tr 7 r 6 y gh bj X uy gt fg " ĊĠĠĠ Ġvar Ġaes _ key 1 Ġ= Ġ" HX 8 7 8 9 u 7 7 TR re hh FFE % #" ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Key ( key : ĠString , Ġlength : ĠInt Ġ= Ġ 1 6 ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsha Ġ= ĠMessage Digest . getInstance (" SHA - 1 ") ĊĠĠĠĠĠĠĠ Ġreturn Ġ ĠArrays . copyOf ( sha . digest ( key . toByteArray ( Charsets . UTF _ 8 )), Ġlength ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġencrypt ( value : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġencrypt ( aes _ key 0 , Ġaes _ key 1 , Ġvalue ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġkey Ġ 1 Ġ= Ġ 4 4 Ġbytes Ġ Ġinit Ġvector : Ġ 1 2 8 bits ĊĠĠĠ Ġprivate Ġfun Ġencrypt ( key : ĠString , Ġiv : ĠString , Ġvalue : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġencrypt ( prepare Key ( key , Ġ 1 6 ), Ġprepare Key ( iv , Ġ 1 6 ), Ġvalue ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġencrypt ( key 1 : ĠByteArray , Ġkey 2 : ĠByteArray , Ġvalue : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiv Ġ= ĠI v Parameter Spec ( key 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs key Spec Ġ= ĠSecret KeySpec ( key 1 , Ġ" AES ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance (" AES / CBC / PKCS 5 P ADDING ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . ENCRYPT _ MODE , Ġs key Spec , Ġiv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencrypted Ġ= Ġcipher . do Final ( value . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBase 6 4 . encode Base 6 4 String ( encrypted ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecrypt ( value : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdecrypt ( aes _ key 0 , Ġaes _ key 1 , Ġvalue ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġdecrypt ( key : ĠString , Ġiv Str : ĠString , Ġencrypted : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiv Ġ= ĠI v Parameter Spec ( prepare Key ( iv Str )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs key Spec Ġ= ĠSecret KeySpec ( prepare Key ( key ), Ġ" AES ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance (" AES / CBC / PKCS 5 P ADDING ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . DE CRYPT _ MODE , Ġs key Spec , Ġiv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= Ġcipher . do Final ( Base 6 4 . decode Base 6 4 ( encrypted )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString ( original ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠĠĠ Ġprivate Ġstatic ĠRandom Ġrandom Ġ= Ġnew ĠRandom (( new ĠDate ()). getTime ()); ĊĠĠĠ Ġvar Ġrand Key : ĠLong ? Ġ= Ġ 1 2 3 4 5 . to Long () ĊĠĠĠ Ġprivate Ġvar Ġrandom : ĠRandom ? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEncrypt s Ġthe Ġstring Ġalong Ġwith Ġsalt ĊĠĠĠĠ Ġ* Ġ@ param ĠuserId ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ* Ġ@ throws ĠException ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsimple Encrypt ( userId : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġset () ĊĠĠĠĠĠĠĠ Ġval Ġencoder Ġ= ĠBASE 6 4 Encoder () ĊĊĠĠĠĠĠĠĠ Ġ// Ġlet 's Ġcreate Ġsome Ġdummy Ġsalt ĊĠĠĠĠĠĠĠ Ġval Ġsalt Ġ= ĠByteArray ( 8 ) ĊĠĠĠĠĠĠĠ Ġrandom !!. next Bytes ( salt ) ĊĠĠĠĠĠĠĠ Ġreturn Ġencoder . encode ( salt ) Ġ+ Ġencoder . encode ( userId . toByteArray ()) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDecrypt s Ġthe Ġstring Ġand Ġremoves Ġthe Ġsalt ĊĠĠĠĠ Ġ* Ġ@ param Ġencrypt Key ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ* Ġ@ throws ĠException ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsimple Decrypt ( encrypt Key : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġset () ĊĠĠĠĠĠĠĠ Ġ// Ġlet 's Ġignore Ġthe Ġsalt ĊĠĠĠĠĠĠĠ Ġif Ġ( encrypt Key . length Ġ> Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= Ġencrypt Key . substring ( 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecoder Ġ= ĠBASE 6 4 Decoder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString ( decoder . decode Buffer ( cipher )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġthrow Ġnew ĠInvalid Implementation Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġ" Failed Ġto Ġperform Ġde cryption Ġfor Ġkey Ġ[" + encrypt Key + "] ", e ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( random Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Ġ= ĠRandom ( rand Key !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }