# ZPE SecureCode

ZPE has for a long time been able to compile and password protect compiled applications. Now with ZPE comes SecureCode (codenamed Diamond Peak). SecureCode is a built-in part of the ZPE package that secures code using a special algorithm. Code can be decrypted by the engine and then run directly from it. Secure code has been in development for months, only to finally come to fruition now.

This new form of security adds layers of protection to applications that make ZPE even more secure. The built-in decryption engine will be included within the up and coming YASS Executable specification.

In a nutshell, the encryption and decryption algorithms use the password as the initialisation vector but since the password is not stored as plain text and can only be verified by encrypting a users input and comparing it against the encrypted password, there is no way to decrypt the code. Further, the compiler applies the encryption algorithm a number of times to strengthen the security of the file.

YASS
function main(){

print("Hello world")

}


When compiled, the file would like:

Binary file
^@^Esr^@,jamiebalfour.zpe.core.YASSCompiledExecutable}N^P;<8A>^B^@^GZ^@^LexperimentalJ^@^DtimeL^@^Fauthort^@^RLjava/lang/String;L^@^Pcompiler_versionq^@~^@^AL^@^Dnameq^@~^@^AL^@^Hpasscodeq^@~^@^AL^@^Gprogramt^@^RLjava/lang/Object;xp^@^@^@^@^M^Xbt^@^Njamiebalfour04t^@^G1.8.8.0t^@^@t^@^@sr^@)jamiebalfour.zpe.core.YASSCompiledProgramP^E<9E> ^S<8F>^B^@^C[^@ functionst^@^][Ljamiebalfour/types/ZPEPair;[^@structuresq^@~^@        [^@     variablesq^@~^@ xpur^@^][Ljamiebalfour.types.ZPEPair;<82>}%LS^B^@^@xp^@^@^@^Asr^@^Zjamiebalfour.types.ZPEPairucÓœ^B^@^BL^@^Anq^@~^@^BL^@^Avq^@~^@^Bxpt^@^Dmainsr^@^Zjamiebalfour.zpe.core.FAST^@^@^@^@^@^@^@^A^B^@      B^@^Kreturn_typeB^@^EscopeB^@^DtypeL^@^Mdocumentationq^@~^@^BL^@^Bidq^@~^@^AL^@^Dleftt^@^Ljamiebalfour/zpe/core/FAST;L^@^Fmiddleq^@~^@^QL^@^Dnextq^@~^@^QL^@^Evalueq^@~^@^Bxp^@^@pq^@~^@^Oppsq^@~^@^P^@^@pq^@~^@^Osq^@~^@^P^@^@^Cpt^@^Eprintpppsq^@~^@^P^@^@pq^@~^@^Gpppsq^@~^@^P^@^@^Hpq^@~^@^Gpppt^@^KHello worldppsq^@~^@^P^@^@pq^@~^@^Gpppppuq^@~^@^K^@^@^@^@uq^@~^@^K^@^@^@^@


But when using SecureCode it looks like:

Binary file
^@^Esr^@,jamiebalfour.zpe.core.YASSCompiledExecutable}N^P;<8A>^B^@^GZ^@^LexperimentalJ^@^DtimeL^@^Fauthort^@^RLjava/lang/String;L^@^Pcompiler_versionq^@~^@^AL^@^Dnameq^@~^@^AL^@^Hpasscodeq^@~^@^AL^@^Gprogramt^@^RLjava/lang/Object;xp^@^@^@^Oryt^@^Njamiebalfour04t^@^G1.8.8.0t^@^@t^@<$2a$10$gKm.f.P6is/VObd9ZtnBreOj5Lu6fIhJ4P7snMp/VJzgdEL4aHUpiur^@^B[B^W^F^HT^B^@^@xp^@^@^Bp<99>^D(<84>E^G^?^?.MTy<8C>1c^LESCD<89>L"$= BB^Y<8C>^K#^T^F^N<85> gs<9E>=F   ESC-/^NÔ¶7^C|'^]<9F>^EÒwAQc3F<9B>K<84>^F<91>|'S<9F>^X+^^MY^O^BÚ‰^GAÍ¿_^D<9A>&^E<91>U*<98>o"s^TÆ­ÓÜ™-Jt^Y.^V<90>R^E^ZiZY^N<9D>s<8B>Æ²^U^TRi^?Vi<96>=c^NnÉ„iz^Xe-dr^\$)<9A>*^X    <0^V<87>N^?^DfT,n<95>k1-<90>*^L^VESC^_<8E>6^P<9D>u<Ls^O^Lio^NM<9D>^B <83><9B><83> '<88>^V^W^Q8ESC}m5q<91>Wp~<98>Q<9B>~<81><8A>Uo%,^V+g}<81><96>+<89>^V<95>^T,4+@qVESC]^_<8C>Ë¼<90>Ñ’o<U+0083>e{<91>v<93>wè™^Fn6E^BN       È±W^G^V^@3<8C>q^YMQH<80>.3Å»<8B>Gc3ôƒœB<9A>^MSOO^?P<9A>^R^@<87>^_<83>7q^RIF"<80>g@3zEhp^ m*<80>#,ESCzÜ˜Í“v<97><8C><82><9B>j^]N<91>b|j+E^N<9C>Ê¥RA8RTÖº<94>I[C^]<92>-%<81>^P^H<90>mt        K_*a<87><9D><91>Y^Z#PD^]:^L<96><84>'%Yao^SÓ·Q^U<84>B]^]Å¼<8A>c^H8^E^AlNwn9C<81>bnm2<93>=?Gg
`

Security and safety have always been paramount within ZPE since the release of version 1.5 with last year's version 1.7.x making the server and client system even more secure using a special public and private key encryption method. ZPE 1.8.x aims to bring further security features to the package in due time. SecureCode is expected later this month.

ZPE SecureCode