package Ġcom . s 7 even software . nos ow allet Ċ Ċ import Ġorg . bouncycastle . crypto . digest s . RI PE MD 1 6 0 Digest Ċ import Ġorg . bouncycastle . util . en coders . Hex Ċ import Ġjava . math . BigInteger Ċ import Ġjava . security . Message Digest Ċ Ċ class Ġmp Cri pto Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun ĠCreate New Address (): Wallet Object Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠMy Data Ġ= ĠWallet Object () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠAddress : String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠKeys Pair : KeyPair ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeys Pair Ġ= ĠSign er Utils . Generate EC KeyPair ( KeyType . SE CP 2 5 6 K 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAddress Ġ= ĠGet Address From PublicKey ( Keys Pair . PublicKey !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Data . Hash Ġ= ĠAddress ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Data . Custom Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Data . PublicKey Ġ= ĠKeys Pair . PublicKey ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Data . PrivateKey Ġ= ĠKeys Pair . PrivateKey ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Data . Balance Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Data . Pending Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Data . Score Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Data . Last OP Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMy Data ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠGet Address From PublicKey ( PubKey : String ): String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠPub SHA Has hed : String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠHash 1 : String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠHash 2 : String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcl ave : String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum ator ia : Int ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPub SHA Has hed Ġ= ĠHash Sha 2 5 6 String ( PubKey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHash 1 Ġ= ĠHash MD 1 6 0 String ( Pub SHA Has hed ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHash 1 Ġ= ĠB MH ext o 5 8 ( Hash 1 , ĠBigInteger (" 5 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum ator ia Ġ= ĠB MB 5 8 res umen ( Hash 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcl ave Ġ= ĠB MD ecto 5 8 ( sum ator ia . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHash 2 Ġ= ĠHash 1 + clave ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCoin Char + Hash 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠSend To ( origin : String , Ġdestination : String , Ġamount : Long , Ġreference : String , ĠviewModel : Main ViewModel ): String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠCur r Time : Long ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠF ee : Long ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠRem aining : Long ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠCoin s Available : Long ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠArray Tr fr s Ġ= ĠArrayList < Order Data >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠCounter Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠOrder Hash String : String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠTr x Line Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠResult Order ID : String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠOrder String : String ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠCur r Time Ġ= ĠSystem . currentTimeMillis ()/ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF ee Ġ= ĠGet Fee ( amount ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRem aining Ġ= Ġamount + Fee ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCoin s Available Ġ= Ġmp Functions . Get Address Balance From Summary ( origin )- mp Functions . getAddress Pending P ays ( origin , ĠviewModel . Add d ress List . value !! , ĠviewModel . Pending List . value !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Remaining Ġ<= ĠCoin s Available Ġ|| ĠviewModel . allow Send All ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrder Hash String Ġ= ĠCur r Time . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Order Ġlist Ġwith Ġorigin Ġin Ġfront ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorder edList Ġ= ĠviewModel . Add d ress List . value !!. clone () Ġas ĠArrayList < Wallet Object > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( wallet Ġin Ġorder edList ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( wallet . Hash Ġ== Ġorigin ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder edList . remove ( wallet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder edList . add ( 0 , Ġwallet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠAmount Ġ= Ġamount Ġ// ĠAmount Ġ== Ġneeded ĠAmount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile ( Amount Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (( ordered List [ Counter ]. Balance - mp Functions . getAddress Pending P ays ( ordered List [ Counter ]. Hash !! , viewModel . Add d ress List . value !! , ĠviewModel . Pending List . value !! )) > 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr x Line Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray Tr fr s . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmp Functions . Send Funds From Address ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder edList [ Counter ]. Hash !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAmount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF ee , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreference , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCur r Time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr x Line , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . Last Block . value !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . Add d ress List . value !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . Pending List . value !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF ee Ġ+= ĠArray Tr fr s . last (). Amount Fee ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAmount Ġ-= ĠArray Tr fr s . last (). Amount Tr f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrder Hash String Ġ+= ĠArray Tr fr s . last (). Tr fr ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCounter ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( tr Ġin ĠArray Tr fr s ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtr . Order ID Ġ= Ġmp Functions . getOrder Hash ( Tr x Line . toString ()+ Order Hash String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" mp Cri pto "," new ĠOrder ID Ġ-> Ġ${ tr . Order ID }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtr . Order Lines Ġ= ĠTr x Line ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult Order ID Ġ= Ġmp Functions . getOrder Hash ( Tr x Line . toString ()+ Order Hash String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" mp Cri pto "," Result Order ID : Ġ$ Result Order ID ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrder String Ġ= Ġmp Functions . get PT CE cn (" ORDER ") +" ORDER Ġ"+ Tr x Line . toString ()+" Ġ$" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( tr Ġin ĠArray Tr fr s ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrder String Ġ+= Ġmp Functions . getString From Order ( tr )+" Ġ$" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrder String Ġ= ĠOrder String . substring ( 0 , ĠOrder String . length - 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmp Network . send Order ( Order String , viewModel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" mp Cri pto "," Origin Ġwith Ġnot Ġenough Ġfunds , Ġavailable : Ġ$ Coins Available , Ġrequired : Ġ$ Remaining ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMIS SING _ FUN DS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠGet Fee ( amount : Long ): Long Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġamount / ĠCom ision tr fr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( result Ġ< ĠMin im un Fee ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMin im un Fee ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetString Signed ( string to Sign : String , ĠprivateKey : ĠString ): String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠMessage As Bytes : ByteArray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠSignature : ĠByteArray ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage As Bytes Ġ= Ġmp Parser . Special Base 6 4 Decode ( string to Sign ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSignature Ġ= ĠSign er Utils . Sign Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage As Bytes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg . bouncycastle . util . en coders . Base 6 4 . decode ( privateKey ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Type . SE CP 2 5 6 K 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString ( org . bouncycastle . util . en coders . Base 6 4 . encode ( Signature )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠVerify Signed String ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring to verify : String , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsigned hash : String , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic key : String ĊĠĠĠĠĠĠĠ Ġ): Boolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠMessage As Bytes Ġ= Ġorg . bouncycastle . util . en coders . Base 6 4 . decode ( string to verify ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠSignature Ġ= Ġorg . bouncycastle . util . en coders . Base 6 4 . decode ( signed hash ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSign er Utils . Verify Signature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSignature , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage As Bytes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg . bouncycastle . util . en coders . Base 6 4 . decode ( public key ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Type . SE CP 2 5 6 K 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Returns Ġthe ĠSHA 2 5 6 Ġof Ġa ĠString Ġin ĠCAPITAL ĊĠĠĠĠĠĠĠ Ġfun ĠHash Sha 2 5 6 String ( StringTo Hash : String ): String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠSource Ġ= ĠString To Hash . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠMessage Digest Instance Ġ= ĠMessage Digest . getInstance (" SHA - 2 5 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠDigest Ġ= ĠMessage Digest Instance . digest ( Source ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠDigest . fold ("", Ġ{ Ġstr , Ġit Ġ-> Ġstr Ġ+ Ġ"% 0 2 x ". format ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult . uppercase () Ġ// Display Ġthe Ġdigest Ġin Ġcapital Ġletter Ġ?? ĠE CO : Ġnot Ġsure Ġwhy ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Returns Ġthe ĠSHA 1 Ġof Ġa ĠString Ġin ĠCAPITAL ĊĠĠĠĠĠĠĠ Ġfun ĠHash Sha 1 String ( StringTo Hash : String ): String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠSource Ġ= ĠString To Hash . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠMessage Digest Instance Ġ= ĠMessage Digest . getInstance (" SHA - 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠDigest Ġ= ĠMessage Digest Instance . digest ( Source ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠDigest . fold ("", Ġ{ Ġstr , Ġit Ġ-> Ġstr Ġ+ Ġ"% 0 2 x ". format ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠHash MD 1 6 0 String ( StringTo Hash : String ): String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbytes FromString Ġ= ĠString To Hash . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmd Instance Ġ= ĠR I PE MD 1 6 0 Digest () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmd Instance . update ( bytes FromString , 0 , bytes FromString . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= ĠByteArray ( md Instance . digest Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmd Instance . do Final ( result , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . e (" mp Cri pto "," MD 1 6 0 Ġresult Ġraw : Ġ"+ String ( result )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . e (" mp Cri pto "," MD 1 6 0 Ġresult Ġhex : Ġ"+ String ( Hex . encode ( result ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString ( Hex . encode ( result )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* ĠLegacy ĠKotlin Ġbased ĊĠĠĠĠĠĠĠ Ġfun ĠB MH ext o 5 8 ( numero hex : String , Ġalphabet number : BigInteger ): String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdecimal Value : BigInteger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠR Div _ Res idu o : BigInteger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠResult ado Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠAl phabet Used : String ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( alphabet number Ġ== ĠBigInteger (" 3 6 ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAl phabet Used Ġ= ĠB 3 6 Alphabet ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAl phabet Used Ġ= ĠB 5 8 Alphabet ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= ĠBM Hex To Dec ( numero hex ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" m cript o "," Ht 5 8 Ġ- Ġdecimal : Ġ$ decimal Value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( decimal Value . toString (). length Ġ>= Ġ 2 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= Ġdecimal Value / alphabet number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR Div _ Res idu o Ġ= Ġdecimal Value Ġ% Ġalphabet number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" m cript o "," Ht 5 8 Ġ- Ġdecimal : Ġ$ decimal Value Ġres idu o : Ġ$ R Div _ Res idu o Ġsim bo lo : Ġ"+ Alphabet Used [ R Div _ Res idu o . toInt ()]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠAl phabet Used [ R Div _ Res idu o . toInt () ]+ Result ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( decimal Value Ġ> Ġalphabet number ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= Ġdecimal Value / alphabet number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR Div _ Res idu o Ġ= Ġdecimal Value Ġ% Ġalphabet number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" m cript o "," Ht 5 8 Ġ- Ġdecimal : Ġ$ decimal Value Ġres idu o : Ġ$ R Div _ Res idu o Ġsim bo lo : Ġ"+ Alphabet Used [ R Div _ Res idu o . toInt ()]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠAl phabet Used [ R Div _ Res idu o . toInt ()] Ġ+ ĠResult ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( decimal Value Ġ> ĠBigInteger (" 0 ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" m cript o "," Ht 5 8 Ġ- Ġdecimal : Ġ$ decimal Value Ġ Ġsim bo lo : Ġ"+ Alphabet Used [ decimal Value . toInt ()]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠAl phabet Used [ decimal Value . toInt () ]+ Result ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult ado ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġfun ĠClear Leading C eros ( numero : String ): String { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUsing ĠBigInteger Ġparser Ġto Ġremove Ġleading Ġzero es ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBigInteger ( numero ). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠB MD iv idir ( numero A : String , ĠDiv isor : Int ): Div Result { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġc oc iente Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠThis Step Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 .. ( numero A . length - 1 )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThis Step Ġ= ĠThis Step Ġ+ Ġnumero A [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Integer . parseInt ( This Step ) Ġ>= ĠDiv isor ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc oc iente Ġ= Ġc oc iente +( Integer . parseInt ( This Step )/ Div isor ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThis Step Ġ= Ġ( Integer . parseInt ( This Step ) Ġ% ĠDiv isor ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc oc iente Ġ= Ġc oc iente Ġ+" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠDiv Result () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr . C oc iente Ġ= ĠClear Leading C eros ( co c iente ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr . Res idu o Ġ= ĠClear Leading C eros ( This Step ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġr ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠMethod Ġreplic ated Ġform ĠN os ow allet ĊĠĠĠĠĠĠĠ Ġfun ĠB MH ext o 5 8 ( numero hex : String , Ġalphabet number : BigInteger ): String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdecimal Value : String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠResult ado Div : Div Result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrest ante : String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠResult ado Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠAl phabet Used : String ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( alphabet number Ġ== ĠBigInteger (" 3 6 ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAl phabet Used Ġ= ĠB 3 6 Alphabet ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAl phabet Used Ġ= ĠB 5 8 Alphabet ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= ĠBM Hex To Dec ( numero hex ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( decimal Value . length Ġ>= Ġ 2 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Div Ġ= ĠB MD iv idir ( decimal Value , Ġalphabet number . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= ĠResult ado Div . C oc iente !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest ante Ġ= ĠResult ado Div . Res idu o !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠAl phabet Used [ Integer . parseInt ( rest ante )] Ġ+ ĠResult ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Integer . parseInt ( decimal Value ) Ġ>= Ġalphabet number . toInt ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Div Ġ= ĠB MD iv idir ( decimal Value , Ġalphabet number . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= ĠResult ado Div . C oc iente !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest ante Ġ= ĠResult ado Div . Res idu o !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠAl phabet Used [ Integer . parseInt ( rest ante )] Ġ+ ĠResult ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Integer . parseInt ( decimal Value ) Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠAl phabet Used [ Integer . parseInt ( decimal Value )] + Result ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult ado ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* Ġ ĠLegacy Ġ- ĠKotlin ĠBase ĊĠĠĠĠĠĠĠ Ġfun ĠB MD ecto 5 8 ( numero : String ): String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdecimal Value : BigInteger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠR Div _ Res idu o : BigInteger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠResult ado Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= ĠBigInteger ( numero ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( decimal Value . toString (). length Ġ>= Ġ 2 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= Ġdecimal Value / ĠBigInteger (" 5 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR Div _ Res idu o Ġ= Ġdecimal Value Ġ% ĠBigInteger (" 5 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠB 5 8 Alphabet [ R Div _ Res idu o . toInt () ]+ Result ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( decimal Value Ġ> ĠBigInteger (" 5 8 ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= Ġdecimal Value / BigInteger (" 5 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR Div _ Res idu o Ġ= Ġdecimal Value Ġ% ĠBigInteger (" 5 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠB 5 8 Alphabet [ R Div _ Res idu o . toInt ()] Ġ+ ĠResult ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( decimal Value Ġ> ĠBigInteger (" 0 ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠB 5 8 Alphabet [ decimal Value . toInt () ]+ Result ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult ado ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠPas cal Ġbased Ġ- ĠNot Ġmatching Ġfor Ġsome Ġreason Ġwith ĠKotlin Ġbased ĊĠĠĠĠĠĠĠ Ġfun ĠB MD ecto 5 8 ( numero : String ): String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdecimal Value : String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠResult ado Div : Div Result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrest ante : String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠResult ado Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= ĠBigInteger ( numero ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( decimal Value . length Ġ>= Ġ 2 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Div Ġ= ĠB MD iv idir ( decimal Value , Ġ 5 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= ĠResult ado Div . C oc iente !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest ante Ġ= ĠResult ado Div . Res idu o !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠB 5 8 Alphabet [ Integer . parseInt ( rest ante )] Ġ+ ĠResult ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Integer . parseInt ( decimal Value ) Ġ>= Ġ 5 8 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Div Ġ= ĠB MD iv idir ( decimal Value , Ġ 5 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecimal Value Ġ= ĠResult ado Div . C oc iente !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest ante Ġ= ĠResult ado Div . Res idu o !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠB 5 8 Alphabet [ Integer . parseInt ( rest ante )] Ġ+ ĠResult ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Integer . parseInt ( decimal Value ) Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult ado Ġ= ĠB 5 8 Alphabet [ Integer . parseInt ( decimal Value )] + Result ado ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult ado ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠB MB 5 8 res umen ( numero 5 8 : String ): Int Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtotal Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 .. ( numero 5 8 . length - 1 )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ= Ġtotal Ġ+ ĠB 5 8 Alphabet . indexOf ( numero 5 8 [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtotal ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠBM Hex To Dec ( numero hex : String ): BigInteger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBigInteger ( numero hex , Ġ 1 6 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }