package Ġsk . stub a . fe i . mob v . crypt ow allet . security Ċ Ċ import Ġandroid . util . Base 6 4 Ċ import Ġsk . stub a . fe i . mob v . crypt ow allet . database . entity . Cipher Data Ċ import Ġjavax . crypto . Cipher Ċ import Ġjavax . crypto . SecretKey Ċ import Ġjavax . crypto . spec . Iv Parameter Spec Ċ Ċ class ĠCrypto Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠIV _ SIZE Ġ= Ġ 1 6 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ LENGTH Ġ= Ġ 2 5 6 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠS ALT _ LENGTH Ġ= Ġ 2 5 6 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAL G ORITHM Ġ= Ġ" AES " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTRANS FORMATION Ġ= Ġ" AES / CBC / PKCS 7 Padding " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ DER IV ATION _ FUNCTION Ġ= Ġ" PB K DF 2 With H mac SHA 1 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġsecret Key Generator : ĠSecret Key Generator Ġ= ĊĠĠĠĠĠĠĠ ĠSecret Key Generator ( KEY _ LENGTH , ĠS ALT _ LENGTH , ĠAL G ORITHM , ĠKEY _ DER IV ATION _ FUNCTION ) ĊĠĠĠ Ġprivate Ġval Ġinitialization Vector Generator : ĠInitialization Vector Generator Ġ= ĊĠĠĠĠĠĠĠ ĠInitialization Vector Generator ( IV _ SIZE ) ĊĊĠĠĠ Ġfun Ġencrypt ( plain Text : ĠString , Ġpin : ĠString ): ĠCipher Data Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġsecret Key Generator . generate SecretKey ( pin ) ĊĠĠĠĠĠĠĠ Ġval Ġiv Spec Ġ= Ġinitialization Vector Generator . create Initialization Vector () ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= Ġget Cipher ( Cipher . ENCRYPT _ MODE , Ġkey . secret Key , Ġiv Spec ) !! ĊĠĠĠĠĠĠĠ Ġval Ġcipher Text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcipher . do Final ( Base 6 4 . encode ( plain Text . toByteArray ( Charsets . UTF _ 8 ), ĠBase 6 4 . DEFAULT )) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCipher Data ( key . salt , Ġiv Spec . iv , Ġcipher Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecrypt ( cipher Data : ĠCipher Data , Ġpin : ĠString ): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġsecret Key Ġ= Ġsecret Key Generator . generate SecretKey ( pin , Ġcipher Data . salt ) ĊĠĠĠĠĠĠĠ Ġval Ġiv Spec Ġ= ĠI v Parameter Spec ( cipher Data . iv ) ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= Ġget Cipher ( Cipher . DE CRYPT _ MODE , Ġsecret Key , Ġiv Spec ) !! ĊĊĠĠĠĠĠĠĠ Ġreturn ĠString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase 6 4 . decode ( cipher . do Final ( cipher Data . cipher Text ), ĠBase 6 4 . DEFAULT ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChar sets . UTF _ 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Cipher ( mode : ĠInt , Ġsecret Key : ĠSecret Key , Ġiv : ĠI v Parameter Spec ): ĠCipher ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance ( TRANS FORMATION ) ĊĠĠĠĠĠĠĠ Ġcipher . init ( mode , Ġsecret Key , Ġiv ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcipher ĊĠĠĠ Ġ} Ċ }