I've created my own encryption class, using mcrypt_encrypt
is working fine but mcrypt_decrypt
is not working as expected. So here's the following code
error_reporting(1);
ini_set('display_errors', 1);
class Encryption {
private $key = "myKeyIs";
protected $iv_size;
protected $iv;
public function __construct(){
$this->iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$this->iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
}
public function encryptData($input) {
$input = $input;
$output = $this->encrypt($input);
return $output;
}
public function decryptData($input) {
$input = base64_decode($input);
$output = $this->decrypt($input);
return $output;
}
public function decrypt($string) {
$string = base64_decode($string);
# retrieves the IV, iv_size should be created using mcrypt_get_iv_size()
$iv_dec = substr($string, 0, $this->iv_size);
# retrieves the cipher text (everything except the $iv_size in the front)
$string = substr($string, $this->iv_size);
# may remove 00h valued characters from end of plain text
$output = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->key,
$string, MCRYPT_MODE_CBC, $iv_dec);
return $output;
}
public function encrypt($string) {
$output = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->key,
$string, MCRYPT_MODE_CBC, $this->iv);
# prepend the IV for it to be available for decryption
$output = $this->iv . $output;
# encode the resulting cipher text so it can be represented by a string
$output = base64_encode($output);
return $output;
}
}
$test = new Encryption();
$encrypted = $test->encryptData("Vicky");
echo $encrypted."
";
echo $test->decryptData($encrypted);
Output
hCaIoMokbIjLlnFnlrS3Iw==
�M����+�=�l�
Now the questions are
- Why its not decrypting as expected?
- Why its not outputting any text above PHP versions 5.6.0. You can check over here for the version output.