package Ġme . z ti any . kotlin . enc ipher Ċ Ċ import Ġjavax . crypto . Cipher Ċ import Ġjavax . crypto . spec . SecretKey Spec Ċ Ċ /** Ċ Ġ* ĠAES åĬłå¯Ĩ è§£ å¯Ĩ Ċ Ġ*/ Ċ object ĠAES Crypt Ġ{ ĊĊĠĠĠ Ġ// AES åĬłå¯Ĩ ĊĠĠĠ Ġfun Ġencrypt ( input : ĠString , Ġpassword : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// 1 . åĪĽå»º cipher å¯¹è±¡ ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance (" AES ") ĊĠĠĠĠĠĠĠ Ġ// 2 . åĪĿå§ĭåĮĸ cipher ï¼ļ åĳĬ è¯ī cipher åĬłå¯Ĩ è¿ĺæĺ¯ è§£ å¯Ĩ ĊĠĠĠĠĠĠĠ Ġ// éĢļè¿ĩ ç§ ĺ éĴ¥ å·¥ åİĤ çĶŁæĪĲ ç§ ĺ éĴ¥ ĊĠĠĠĠĠĠĠ Ġval Ġkey Spec Ġ= ĠSecret KeySpec ( password . toByteArray (), Ġ" AES ") ĊĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . ENCRYPT _ MODE , Ġkey Spec ) ĊĠĠĠĠĠĠĠ Ġ// 3 . åĬłå¯Ĩ / è§£ å¯Ĩ ĊĠĠĠĠĠĠĠ Ġval Ġencrypt Ġ= Ġcipher . do Final ( input . toByteArray ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠBase 6 4 . encode ( encrypt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// AES è§£ å¯Ĩ ĊĠĠĠ Ġfun Ġdecrypt ( input : ĠString , Ġpassword : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// 1 . åĪĽå»º cipher å¯¹è±¡ ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance (" AES ") ĊĠĠĠĠĠĠĠ Ġ// 2 . åĪĿå§ĭåĮĸ cipher : åĳĬ è¯ī cipher åĬłå¯Ĩ è¿ĺæĺ¯ è§£ å¯Ĩ ĊĠĠĠĠĠĠĠ Ġ// éĢļè¿ĩ ç§ ĺ éĴ¥ å·¥ åİĤ çĶŁæĪĲ ç§ ĺ éĴ¥ ĊĠĠĠĠĠĠĠ Ġval Ġkey Spec Ġ= ĠSecret KeySpec ( password . toByteArray (), Ġ" AES ") ĊĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . DE CRYPT _ MODE , Ġkey Spec ) ĊĠĠĠĠĠĠĠ Ġ// 3 . åĬłå¯Ĩ / è§£ å¯Ĩ ĊĠĠĠĠĠĠĠ Ġval Ġencrypt Ġ= Ġcipher . do Final ( Base 6 4 . decode ( input )) ĊĠĠĠĠĠĠĠ Ġreturn ĠString ( encrypt ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġpassword Ġ= Ġ" 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 " // éķ¿åº¦ 1 6 ä½į ĊĠĠĠ Ġprintln (" AES ç§ ĺ éĴ¥ åŃĹèĬĤ éķ¿åº¦ =" Ġ+ Ġpassword . toByteArray (). size ) ĊĊĠĠĠ Ġ// AES / CBC / No Padding Ġ( 1 2 8 ) Ġ: 1 6 ä¸ª åŃĹèĬĤ ï¼Į 1 6 Ġ* Ġ 8 Ġ= Ġ 1 2 8 Ġ ä½į ĊĊĠĠĠ Ġval Ġinput Ġ= Ġ" æĪĳ æĺ¯ åİŁ æĸĩ " ĊĊĠĠĠ Ġval Ġencrypt Ġ= ĠAES Crypt . encrypt ( input , Ġpassword ) ĊĠĠĠ Ġval Ġdecrypt Ġ= ĠAES Crypt . decrypt ( encrypt , Ġpassword ) ĊĠĠĠ Ġprintln (" åĬłå¯Ĩ =$ encrypt ") ĊĠĠĠ Ġprintln (" è§£ å¯Ĩ =$ decrypt ") Ċ } Ċ