Created
April 12, 2015 15:46
-
-
Save suchasplus/8d281bd98c850cfc612c to your computer and use it in GitHub Desktop.
AES for Android and PHP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class MCryptAES { | |
private $iv; | |
private $key; | |
private $bit; //Only can use 128, 256 | |
public function __construct($key, $bit = 128, $iv = "") { | |
if($bit == 256){ | |
$this->key = hash('SHA256', $key, true); | |
}else{ | |
$this->key = hash('MD5', $key, true); | |
} | |
if($iv != ""){ | |
$this->iv = hash('MD5', $iv, true); | |
}else{ | |
$this->iv = chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0); //IV is not set. It doesn't recommend. | |
} | |
} | |
public function encrypt($str) { | |
//Open | |
$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); | |
mcrypt_generic_init($module, $this->key, $this->iv); | |
//Padding | |
$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); //Get Block Size | |
$pad = $block - (strlen($str) % $block); //Compute how many characters need to pad | |
$str .= str_repeat(chr($pad), $pad); // After pad, the str length must be equal to block or its integer multiples | |
//Encrypt | |
$encrypted = mcrypt_generic($module, $str); | |
//Close | |
mcrypt_generic_deinit($module); | |
mcrypt_module_close($module); | |
//Return | |
return base64_encode($encrypted); | |
} | |
public function decrypt($str) { | |
//Open | |
$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); | |
mcrypt_generic_init($module, $this->key, $this->iv); | |
//Decrypt | |
$str = mdecrypt_generic($module, base64_decode($str)); //Get original str | |
//Close | |
mcrypt_generic_deinit($module); | |
mcrypt_module_close($module); | |
//Depadding | |
$slast = ord(substr($str, -1)); //pad value and pad count | |
$str = substr($str, 0, strlen($str) - $slast); | |
//Return | |
return $str; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment