package Ġorg . xm . secret . photo . album . test Ċ Ċ // package Ġorg . xm . secret . photo . album . function . en decode Ċ // Ċ // import Ġandroid . os . Environment Ċ // import Ġandroid . util . Log Ċ // import Ġcom . alle ver . lib . common . app . App Ċ // import Ġorg . xm . secret . photo . album . util . Bytes Utils Ċ // import Ġjava . io .* Ċ // import Ġjava . lang . Exception Ċ // import Ġjava . util .* Ċ // Ċ // /*** Ċ // Ġ* ĠĠĠĠĠ Ġ* Ġ// ĠĠĠ Ġ éŃ Ķ æ³ķ åĢ¼ ĉ ĠĠĠĠĠĠĠĠ 4 Ċ // Ġ* ĠĠĠĠĠ Ġ* Ġ// ĠĠĠ Ġ åİŁå§ĭ æķ°æį® åģı ç§» éĩı ĉĠĠĠĠ 4 Ċ // Ġ* ĠĠĠĠĠ Ġ* Ġ// ĠĠĠ Ġ åİŁå§ĭ æķ°æį® éķ¿åº¦ ĉĠĠĠĠ 8 Ċ // Ġ* ĠĠĠĠĠ Ġ* Ġ// ĠĠĠ Ġ æĹ¶éĹ´ æĪ ³ ĉ ĠĠĠĠĠĠĠĠ 8 Ċ // Ġ* ĠĠĠĠĠ Ġ* Ġ// ĠĠĠ Ġ åİŁå§ĭ è·¯å¾Ħ çļĦ éķ¿åº¦ ĉĠĠĠĠ 4 Ċ // Ġ* ĠĠĠĠĠ Ġ* Ġ// ĠĠĠ Ġ åİŁå§ĭ è·¯å¾Ħ ĠĠĠĠĠĠĠ ĉ n Ċ // Ġ* ĠĠĠĠĠ Ġ* Ġ// ĠĠĠ Ġ åĬłå¯Ĩ è·¯å¾Ħ çļĦ éķ¿åº¦ ĉĠĠĠĠ 4 Ċ // Ġ* ĠĠĠĠĠ Ġ* Ġ// ĠĠĠ Ġ åĬłå¯Ĩ è·¯å¾Ħ ĉ ĠĠĠĠĠĠĠ Ġn Ċ // Ġ* ĠĠĠĠĠ Ġ* Ġ// ĠĠĠ Ġ ç§ ĺ éĴ¥ ĉ ĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ċ // Ġ*/ Ċ // class ĠHeader Bean Ġ{ Ċ // ĠĠĠ Ġcompanion Ġobject Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠHeader Bean :: class . java . name Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// éŃ Ķ æ³ķ åĢ¼ 4 ä¸ª åŃĹèĬĤ ï¼Ī - AL - ï¼ī Ċ // ĠĠĠĠĠĠĠ Ġval ĠMAG IC _ VALUE Ġ= Ġ"- AL -" Ċ // Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġval ĠEN CODE _ PATH _ DIR Ġ= ĠEnvironment . get External Storage Directory (). absolute Path Ġ+ ĠFile . separator Ġ+ Ġ"" Ġ+ ĠApp . context . get PackageName () Ġ+ Ġ"/ Image / Cache / Decode " Ċ // Ċ // ĠĠĠ Ġprivate Ġval ĠKEY _ VALUE Ġ= ĠRandom (). nextInt ( 8 ) Ġ+ Ġ 1 Ċ // Ċ // ĠĠĠ Ġ// éŃ Ķ æ³ķ åĢ¼ - 4 åŃĹèĬĤ Ċ // ĠĠĠ Ġvar Ġmagic Value Ġ= Ġ"" Ċ // ĠĠĠĠĠĠĠ Ġprivate Ġset Ċ // ĠĠĠ Ġ// åİŁå§ĭ æķ°æį® åģı ç§» éĩı - 4 åŃĹèĬĤ Ċ // ĠĠĠ Ġvar Ġorigin Offset Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠ Ġprivate Ġset Ċ // ĠĠĠ Ġ// åİŁå§ĭ æķ°æį® éķ¿åº¦ - 8 åŃĹèĬĤ Ċ // ĠĠĠ Ġvar Ġorigin File Length Ġ= Ġ 0 L Ċ // ĠĠĠĠĠĠĠ Ġprivate Ġset Ċ // ĠĠĠ Ġ// æĹ¶éĹ´ æĪ ³ - 8 åŃĹèĬĤ Ċ // ĠĠĠ Ġvar Ġtime Millis Ġ= Ġ 0 L Ċ // ĠĠĠ Ġ// åİŁå§ĭ è·¯å¾Ħ éķ¿åº¦ - 4 åŃĹèĬĤ Ċ // ĠĠĠ Ġvar Ġorigin Path Length Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠ Ġprivate Ġset Ċ // ĠĠĠ Ġ// åİŁå§ĭ è·¯å¾Ħ - n åŃĹèĬĤ Ċ // ĠĠĠ Ġvar Ġorigin Path Ġ= Ġ"" Ċ // ĠĠĠ Ġ// åĬłå¯Ĩ è·¯å¾Ħ éķ¿åº¦ - 4 åŃĹèĬĤ Ċ // ĠĠĠ Ġvar Ġencode Path Length Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠ Ġprivate Ġset Ċ // ĠĠĠ Ġ// åĬłå¯Ĩ è·¯å¾Ħ - n åŃĹèĬĤ Ċ // ĠĠĠ Ġvar Ġencode Path Ġ= Ġ"" Ċ // ĠĠĠ Ġ// ç§ ĺ éĴ¥ - 1 åŃĹèĬĤ Ċ // ĠĠĠ Ġvar Ġkey Ġ= Ġ 0 Ċ // Ċ // ĠĠĠ Ġconstructor () Ġ{} Ċ // Ċ // ĠĠĠ Ġconstructor ( origin Path : ĠString ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġthis . origin Path Ġ= Ġorigin Path Ċ // ĠĠĠĠĠĠĠ Ġinit Data () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġorigin File Ġ= ĠFile ( origin Path ) Ċ // ĠĠĠĠĠĠĠ Ġmagic Value Ġ= ĠMAG IC _ VALUE Ċ // ĠĠĠĠĠĠĠ Ġorigin File Length Ġ= Ġorigin File . length () Ċ // ĠĠĠĠĠĠĠ Ġtime Millis Ġ= ĠSystem . currentTimeMillis () Ċ // ĠĠĠĠĠĠĠ Ġorigin Path Length Ġ= Ġorigin Path . length Ċ // ĠĠĠĠĠĠĠ Ġorigin Path Ġ= Ġorigin Path Ċ // ĠĠĠĠĠĠĠ Ġval Ġencode Dir File Ġ= ĠFile ( ENCODE _ PATH _ DIR ) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! encode Dir File . exists ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġencode Dir File . mkdir s () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġencode Path Ġ= Ġ"$ ENCODE _ PATH _ DIR ${ File . separator }${ origin File . name }" Ċ // ĠĠĠĠĠĠĠ Ġval Ġencode File Ġ= ĠFile ( encode Path ) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! encode File . exists ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġencode File . createNew File () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġencode Path Length Ġ= Ġencode Path . length Ċ // ĠĠĠĠĠĠĠ Ġkey Ġ= ĠKEY _ VALUE Ċ // ĠĠĠĠĠĠĠ Ġ// è¿ĺ å·® åİŁå§ĭ æĸĩä»¶ æķ°æį® åģı ç§» éĩı Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ/** * Ċ // ĠĠĠĠ Ġ* Ġ æŀĦå»º æķ°æį® å¤´ Ċ // ĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġfun Ġbuild Header (): ĠByteArray Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġ// éŃ Ķ æ³ķ åĢ¼ Ċ // ĠĠĠĠĠĠĠ Ġval Ġmagic Bytes Ġ= Ġmagic Value . toByteArray () Ċ // ĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" build Header : Ġmagic Bytes . size Ġ= Ġ" Ġ+ Ġmagic Bytes . size ) Ċ // ĠĠĠĠĠĠĠ Ġ// åİŁå§ĭ è·¯å¾Ħ Ċ // ĠĠĠĠĠĠĠ Ġval Ġorigin Path Bytes Ġ= Ġorigin Path . toByteArray () Ċ // ĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" build Header : Ġorigin Path Bytes . size Ġ= Ġ" Ġ+ Ġorigin Path Bytes . size ) Ċ // ĠĠĠĠĠĠĠ Ġ// åĬłå¯Ĩ è·¯å¾Ħ Ċ // ĠĠĠĠĠĠĠ Ġval Ġencode Path Bytes Ġ= Ġencode Path . toByteArray () Ċ // ĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" build Header : Ġencode Path Bytes . size Ġ= Ġ" Ġ+ Ġencode Path Bytes . size ) Ċ // ĠĠĠĠĠĠĠ Ġ// åİŁå§ĭ è·¯å¾Ħ éķ¿åº¦ Ċ // ĠĠĠĠĠĠĠ Ġval Ġorigin Path Length Ġ= Ġorigin Path Length Ċ // ĠĠĠĠĠĠĠ Ġval Ġorigin Path Length Bytes Ġ= ĠBytes Utils . int To ByteArray ( origin Path Length ) Ċ // ĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" build Header : Ġorigin Path Length Bytes . size Ġ= Ġ" Ġ+ Ġorigin Path Length Bytes . size ) Ċ // ĠĠĠĠĠĠĠ Ġ// åĬłå¯Ĩ è·¯å¾Ħ éķ¿åº¦ Ċ // ĠĠĠĠĠĠĠ Ġval Ġencode Path Length Ġ= Ġencode Path Length Ċ // ĠĠĠĠĠĠĠ Ġval Ġencode Path Length Bytes Ġ= ĠBytes Utils . int To ByteArray ( encode Path Length ) Ċ // ĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" build Header : Ġencode Path Length Bytes . size Ġ= Ġ" Ġ+ Ġencode Path Length Bytes . size ) Ċ // ĠĠĠĠĠĠĠ Ġ// æĹ¶éĹ´ æĪ ³ Ċ // ĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġtime Millis Ċ // ĠĠĠĠĠĠĠ Ġval Ġtime Bytes Ġ= ĠBytes Utils . long ToBytes ( time ) Ċ // ĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" build Header : Ġtime Bytes . size Ġ= Ġ" Ġ+ Ġtime Bytes . size ) Ċ // ĠĠĠĠĠĠĠ Ġ// åİŁå§ĭ æķ°æį® éķ¿åº¦ Ċ // ĠĠĠĠĠĠĠ Ġval Ġorigin File Length Ġ= Ġorigin File Length Ċ // ĠĠĠĠĠĠĠ Ġval Ġorigin File Length Bytes Ġ= ĠBytes Utils . long ToBytes ( origin File Length ) Ċ // ĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" build Header : Ġorigin File Length Bytes . size Ġ= Ġ" Ġ+ Ġorigin File Length Bytes . size ) Ċ // ĠĠĠĠĠĠĠ Ġ// key Ċ // ĠĠĠĠĠĠĠ Ġval Ġkey Bytes Ġ= ĠByteArray ( 1 ) Ċ // ĠĠĠĠĠĠĠ Ġkey Bytes [ 0 ] Ġ= ĠBytes Utils . int To Byte ( key ) Ċ // ĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" build Header : Ġkey Bytes . size Ġ= Ġ" Ġ+ Ġkey Bytes . size ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġorigin Offset Ġ= Ġmagic Bytes . size Ġ+ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin Path Bytes . size Ġ+ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencode Path Bytes . size Ġ+ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin Path Length Bytes . size Ġ+ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencode Path Length Bytes . size Ġ+ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Bytes . size Ġ+ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin File Length Bytes . size Ġ+ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Bytes . size Ġ+ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 // æľ¬ èº« Ċ // ĠĠĠĠĠĠĠ Ġthis . origin Offset Ġ= Ġorigin Offset Ċ // ĠĠĠĠĠĠĠ Ġval Ġorigin Offset Bytes Ġ= ĠBytes Utils . int To ByteArray ( origin Offset ) Ċ // ĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" encode : Ġorigin Offset Bytes . size Ġ= Ġ" Ġ+ Ġorigin Offset Bytes . size ) Ċ // Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval ĠbyteArray OutputStream Ġ= ĠByteArrayOutputStream () Ċ // Ċ // ĠĠĠĠĠĠĠ Ġwrite Bytes ( byteArray OutputStream , Ġmagic Bytes ) Ċ // ĠĠĠĠĠĠĠ Ġwrite Bytes ( byteArray OutputStream , Ġorigin Offset Bytes ) Ċ // ĠĠĠĠĠĠĠ Ġwrite Bytes ( byteArray OutputStream , Ġorigin File Length Bytes ) Ċ // ĠĠĠĠĠĠĠ Ġwrite Bytes ( byteArray OutputStream , Ġtime Bytes ) Ċ // ĠĠĠĠĠĠĠ Ġwrite Bytes ( byteArray OutputStream , Ġorigin Path Length Bytes ) Ċ // ĠĠĠĠĠĠĠ Ġwrite Bytes ( byteArray OutputStream , Ġorigin Path Bytes ) Ċ // ĠĠĠĠĠĠĠ Ġwrite Bytes ( byteArray OutputStream , Ġencode Path Length Bytes ) Ċ // ĠĠĠĠĠĠĠ Ġwrite Bytes ( byteArray OutputStream , Ġencode Path Bytes ) Ċ // ĠĠĠĠĠĠĠ Ġwrite Bytes ( byteArray OutputStream , Ġkey Bytes ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġhead Bytes Ġ= ĠbyteArray OutputStream . toByteArray () Ċ // ĠĠĠĠĠĠĠ ĠbyteArray OutputStream . close () Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġhead Bytes Ċ // Ċ // Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ/** * Ċ // ĠĠĠĠ Ġ* Ġ@ param Ġpath Ġ åĬłå¯Ĩ æĸĩä»¶çļĦ è·¯å¾Ħ Ċ // ĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġfun Ġresolve Header ( path : ĠString ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġvar Ġbuffered InputStream : ĠBuffered InputStream ? Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠ Ġvar Ġhead B aos : ĠByteArrayOutputStream ? Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠByteArray ( 1 0 2 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbuffered InputStream Ġ= ĠBuffered InputStream ( FileInputStream ( File ( path ))) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhead Bytes Buffer Ġ= ĠByteArray ( 1 0 2 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhead Length Ġ= Ġbuffered InputStream . read ( head Bytes Buffer ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġhead B aos Ġ= ĠByteArrayOutputStream () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġhead B aos . write ( head Bytes Buffer , Ġ 0 , Ġhead Length ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhead Bytes Ġ= Ġhead B aos . toByteArray () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresolve Header ( head Bytes ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġhead B aos ?. close () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbuffered InputStream ?. close () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ/** * Ċ // ĠĠĠĠ Ġ* Ġ è§£æŀĲ æķ°æį® å¤´ Ċ // ĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġfun Ġresolve Header ( head Bytes : ĠByteArray ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġ// æŃ¤ æĹ¶ æīĢæľī åŃĹæ®µ éĥ½ å·² çŁ¥éģĵ Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġoffset Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// éŃ Ķ æ³ķ åĢ¼ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmagic Bytes Ġ= ĠByteArray ( 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġcut Bytes ( head Bytes , Ġ 0 , Ġmagic Bytes , Ġ 0 , Ġ 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmagic Ġ= ĠString ( magic Bytes ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" decode : Ġmagic Ġ= Ġ$ magic ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// åİŁå§ĭ æķ°æį® åģı ç§» éĩı Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin Offset Bytes Ġ= ĠByteArray ( 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġcut Bytes ( head Bytes , Ġoffset , Ġorigin Offset Bytes , Ġ 0 , Ġ 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin Offset Ġ= ĠBytes Utils . byteArray ToInt ( origin Offset Bytes ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" decode : Ġorigin Offset Ġ= Ġ$ origin Offset ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// åİŁå§ĭ æķ°æį® éķ¿åº¦ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin File Length Bytes Ġ= ĠByteArray ( 8 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġcut Bytes ( head Bytes , Ġoffset , Ġorigin File Length Bytes , Ġ 0 , Ġ 8 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin File Length Ġ= ĠBytes Utils . bytes To Long ( origin File Length Bytes ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" decode : Ġorigin File Length Ġ= Ġ$ origin File Length ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĹ¶éĹ´ æĪ ³ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Bytes Ġ= ĠByteArray ( 8 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġcut Bytes ( head Bytes , Ġoffset , Ġtime Bytes , Ġ 0 , Ġ 8 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Millis Ġ= ĠBytes Utils . bytes To Long ( time Bytes ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// åİŁå§ĭ è·¯å¾Ħ çļĦ éķ¿åº¦ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin Path Length Bytes Ġ= ĠByteArray ( 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġcut Bytes ( head Bytes , Ġoffset , Ġorigin Path Length Bytes , Ġ 0 , Ġ 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin Path Length Ġ= ĠBytes Utils . byteArray ToInt ( origin Path Length Bytes ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" decode : Ġorigin Path Length Ġ= Ġ$ origin Path Length ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// åİŁå§ĭ è·¯å¾Ħ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin Path Bytes Ġ= ĠByteArray ( origin Path Length ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġcut Bytes ( head Bytes , Ġoffset , Ġorigin Path Bytes , Ġ 0 , Ġorigin Path Length ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin Path Ġ= ĠString ( origin Path Bytes ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" decode : Ġorigin Path Ġ= Ġ$ origin Path ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĬłå¯Ĩ è·¯å¾Ħ çļĦ éķ¿åº¦ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencode Path Length Bytes Ġ= ĠByteArray ( 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġcut Bytes ( head Bytes , Ġoffset , Ġencode Path Length Bytes , Ġ 0 , Ġ 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencode Path Length Ġ= ĠBytes Utils . byteArray ToInt ( encode Path Length Bytes ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" decode : Ġencode Path Length Ġ= Ġ$ encode Path Length ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĬłå¯Ĩ è·¯å¾Ħ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencode Path Bytes Ġ= ĠByteArray ( encode Path Length ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġcut Bytes ( head Bytes , Ġoffset , Ġencode Path Bytes , Ġ 0 , Ġencode Path Length ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencode Path Ġ= ĠString ( encode Path Bytes ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" decode : Ġencode Path Ġ= Ġ$ encode Path ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Bytes Ġ= ĠByteArray ( 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġcut Bytes ( head Bytes , Ġoffset , Ġkey Bytes , Ġ 0 , Ġ 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠBytes Utils . byte ToInt ( key Bytes [ 0 ]) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" decode : Ġkey Ġ= Ġ$ key ") Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . magic Value Ġ= Ġmagic Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . origin Offset Ġ= Ġorigin Offset Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . origin File Length Ġ= Ġorigin File Length Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . time Millis Ġ= Ġtime Millis Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . origin Path Length Ġ= Ġorigin Path Length Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . origin Path Ġ= Ġorigin Path Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . encode Path Length Ġ= Ġencode Path Length Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . encode Path Ġ= Ġencode Path Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . key Ġ= Ġkey Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġfun Ġwrite Bytes ( ba os : ĠByteArrayOutputStream , Ġbytes : ĠByteArray ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġba os . write ( bytes , Ġ 0 , Ġbytes . size ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ/** * Ċ // ĠĠĠĠ Ġ* Ġ@ param ĠĠĠĠĠ Ġsrc ĠĠĠĠĠ Ġthe Ġsource Ġarray . Ċ // ĠĠĠĠ Ġ* Ġ@ param ĠĠĠĠĠ Ġoffset ĠĠ Ġstarting Ġposition Ġin Ġthe Ġsource Ġarray . Ċ // ĠĠĠĠ Ġ* Ġ@ param ĠĠĠĠĠ Ġdest ĠĠĠĠ Ġthe Ġdestination Ġarray . Ċ // ĠĠĠĠ Ġ* Ġ@ param ĠĠĠĠĠ Ġdest Pos Ġ Ġstarting Ġposition Ġin Ġthe Ġdestination Ġdata . Ċ // ĠĠĠĠ Ġ* Ġ@ param ĠĠĠĠĠ Ġlength ĠĠ Ġthe Ġnumber Ġof Ġarray Ġelements Ġto Ġbe Ġcopied . Ċ // ĠĠĠĠ Ġ* Ġ@ return Ċ // ĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġprivate Ġfun Ġcut Bytes ( src : ĠByteArray , Ġoffset : ĠInt , Ġdest : ĠByteArray , Ġdest Pos : ĠInt , Ġlength : ĠInt ): ĠInt Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠSystem . arraycopy ( src , Ġoffset , Ġdest , Ġdest Pos , Ġlength ) Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġoffset Ġ+ Ġlength Ċ // ĠĠĠ Ġ} Ċ //}