/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 ĠThe Ġsky ĠAuthors . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . sky . account . manager . util Ċ Ċ import Ġjava . security . Secure Random Ċ import Ġjavax . crypto . Cipher Ċ import Ġjavax . crypto . Key Generator Ċ import Ġjavax . crypto . SecretKey Ċ import Ġjavax . crypto . spec . Iv Parameter Spec ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġsky Ġon Ġ 1 7 - 9 - 4 . Ċ Ġ*/ Ċ object ĠSecret Util Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠA Ġ= Ġbyte ArrayOf ( 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĊĠĠĠ Ġfun Ġbuild Key ( password : ĠString ): ĠSecret Key Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrandom Ġ= ĠSecure Random . getInstance (" SHA 1 PR NG ") ĊĠĠĠĠĠĠĠ Ġrandom . set Seed ( password . toByteArray ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġkey Generator Ġ= ĠKey Generator . getInstance (" AES ") ĊĠĠĠĠĠĠĠ Ġkey Generator . init ( 1 2 8 , Ġrandom ) ĊĠĠĠĠĠĠĠ Ġreturn Ġkey Generator . generate Key () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecrypt ( key : ĠSecret Key , Ġvalue : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance (" AES / CBC / PKCS 5 Padding ") ĊĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . DE CRYPT _ MODE , Ġkey , ĠI v Parameter Spec ( A )) ĊĠĠĠĠĠĠĠ Ġreturn Ġcipher . do Final ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġencrypt ( key : ĠSecret Key , Ġvalue : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance (" AES / CBC / PKCS 5 Padding ") ĊĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . ENCRYPT _ MODE , Ġkey , ĠI v Parameter Spec ( A )) ĊĠĠĠĠĠĠĠ Ġreturn Ġcipher . do Final ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġencrypt ( password : ĠString , Ġvalue : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġencrypt Value Ġ= Ġencrypt ( build Key ( password ), Ġvalue . toByteArray ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠMD 5 Util . bytes To HexString ( encrypt Value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecrypt ( password : ĠString , Ġvalue : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdecrypt Value Ġ= Ġdecrypt ( build Key ( password ), ĠMD 5 Util . hex StringTo Bytes ( value )) ĊĠĠĠĠĠĠĠ Ġreturn ĠString ( decrypt Value ) ĊĠĠĠ Ġ} Ċ }