protected function getModuleData($moduleName)
 {
     $xxtea = new XXTEA();
     $xxtea->setKey($this->config['key']);
     $srcPath = $this->config['srcpath'] . DS . $moduleName;
     $bytes = file_get_contents($srcPath);
     $bytes = $this->config['sign'] . $xxtea->encrypt($bytes);
     return $bytes;
 }
Ejemplo n.º 2
0
 /**
  * Decrypts text with XXTEA algorithm.
  */
 public static function decrypt($key, $text)
 {
     $k = XXTEA::str2long($key);
     $v = XXTEA::str2long($text);
     $n = count($v);
     $z = $v[$n - 1];
     $y = $v[0];
     $d = 0.0;
     $m = 0;
     $e = 0;
     $q = floor(6 + 52 / $n);
     $s = $q * $d;
     while ($s != 0) {
         $e = XXTEA::urshift($s, 2) & 3;
         for ($i = $n - 1; $i >= 0; $i--) {
             $z = $v[$i > 0 ? $i - 1 : $n - 1];
             $m = XXTEA::int32((XXTEA::urshift($z, 5) ^ $y << 2) + (XXTEA::urshift($y, 3) ^ $z << 4)) ^ XXTEA::int32(($s ^ $y) + ($k[$i & 3 ^ $e] ^ $z));
             $y = $v[$i] = XXTEA::int32($v[$i] - $m);
         }
         $s = XXTEA::int32($s - $d);
     }
     return XXTEA::long2str($v);
 }
Ejemplo n.º 3
0
print "ARC4 otv decrypted is ok: " . bool_str(Base16::encode($arc4tvd) == "0123456789abcdef") . "<br/>\n";
print "ARC4 encrypted in UTF-8: " . Base16::encode($arc4e) . "<br/>\n";
print "ARC4 decrypted in UTF-8: " . $arc4d . "<br/><br/>\n";
/**
* Test XXTEA with one official test vector and custom input.
* Vectors from: http://www.crypt.co.za/post/27
*/
$xxttvk = Base16::decode("9e3779b99b9773e9b979379e6b695156");
$xxttvt = Base16::decode("0102040810204080fffefcf8f0e0c080");
$xxttve = XXTEA::encrypt($xxttvk, $xxttvt);
$xxttvd = XXTEA::decrypt($xxttvk, $xxttve);
//
$xxteak = "1234567890123456";
$xxteae = XXTEA::encrypt($xxteak, PKCS7::pad($input, 4));
// Needs padding.
$xxtead = PKCS7::unpad(XXTEA::decrypt($xxteak, $xxteae));
// Needs unpadding.
//
print "XXTEA otv encrypted is ok: " . bool_str(Base16::encode($xxttve) == "01b815fd2e4894d13555da434c9d868a") . "<br/>\n";
print "XXTEA otv decrypted is ok: " . bool_str(Base16::encode($xxttvd) == "0102040810204080fffefcf8f0e0c080") . "<br/>\n";
print "XXTEA encrypted in UTF-8: " . Base16::encode($xxteae) . "<br/>\n";
print "XXTEA decrypted in UTF-8: " . $xxtead . "<br/><br/>\n";
/**
* Test AES-128 with one official test vector and custom input.
* Vectors from: http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf
*/
$aes128tvk = pack("c*", 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf);
$aes128tvt = pack("c*", 0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff);
$aes128tve = AES::encrypt($aes128tvk, $aes128tvt);
// ECB mode, no padding needed.
$aes128tvd = AES::decrypt($aes128tvk, $aes128tve);
 protected function createOutputZIP(array $modules, array $bytes)
 {
     // create ZIP archive
     $zipfile = $this->config['output'];
     $zip = new ZipArchive();
     if (!$zip->open($zipfile, ZIPARCHIVE::OVERWRITE | ZIPARCHIVE::CM_STORE)) {
         return false;
     }
     if (!$this->config['quiet']) {
         printf("create ZIP archive file: %s\n", $zipfile);
     }
     foreach ($modules as $path => $module) {
         $zip->addFromString($this->config['prefix'] . $module['moduleName'], $bytes[$path]);
     }
     $zip->close();
     if ($this->config['encrypt'] == self::ENCRYPT_XXTEA_ZIP) {
         $xxtea = new XXTEA();
         $xxtea->setKey($this->config['key']);
         file_put_contents($zipfile, $this->config['sign'] . $xxtea->encrypt(file_get_contents($zipfile)));
     }
     if (!$this->config['quiet']) {
         printf("done.\n\n");
     }
     return true;
 }
Ejemplo n.º 5
0
 function xxtea_decrypt($str, $key)
 {
     return XXTEA::decrypt($str, $key);
 }
Ejemplo n.º 6
0
 protected function getModulesData(array $modules, $key = null, $sign = null)
 {
     if (!empty($key)) {
         $xxtea = new XXTEA();
         $xxtea->setKey($key);
     }
     $modulesBytes = array();
     foreach ($modules as $path => $module) {
         $bytes = file_get_contents($path);
         if (!empty($key)) {
             $bytes = $sign . $xxtea->encrypt($bytes);
         }
         file_put_contents($module['tempFilePath'], $bytes);
         if (!$bytes) {
             print "\n";
             return false;
         }
         $modulesBytes[$path] = $bytes;
         if (!$this->config['quiet']) {
             printf("  > get bytes [% 3d KB] %s\n", ceil(strlen($bytes) / 1024), $module['moduleName']);
         }
     }
     return $modulesBytes;
 }