Path: blob/main/databases/adminer/files/patch-adminer_include_xxtea.inc.php
20810 views
--- adminer/include/xxtea.inc.php.orig 2025-11-14 10:44:16 UTC1+++ adminer/include/xxtea.inc.php2@@ -45,6 +45,11 @@3return int32((($z >> 5 & 0x7FFFFFF) ^ $y << 2) + (($y >> 3 & 0x1FFFFFFF) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k ^ $z));4}56+const AES256_NAME = 'aes-256-gcm';7+const AES256_KEY_BYTES = 32;8+const AES256_NONCE_BYTES = 12;9+const AES256_TAG_BYTES = 16;10+11/** Cipher12* @param string $str plain-text password13* @return string binary cipher14@@ -53,6 +58,20 @@15if ($str == "") {16return "";17}18+ $key = hash_hkdf('sha256', $key, AES256_KEY_BYTES, AES256_NAME);19+ $nonce = random_bytes(AES256_NONCE_BYTES);20+ $cipherText = openssl_encrypt(21+ $str,22+ AES256_NAME,23+ $key,24+ OPENSSL_RAW_DATA,25+ $nonce,26+ $tag,27+ '',28+ AES256_TAG_BYTES29+ );30+ return $nonce . $tag . $cipherText;31+/*32$key = array_values(unpack("V*", pack("H*", md5($key))));33$v = str2long($str, true);34$n = count($v) - 1;35@@ -75,6 +94,7 @@36$v[$n] = $z;37}38return long2str($v, false);39+*/40}4142/** Decipher43@@ -88,6 +108,20 @@44if (!$key) {45return false;46}47+ $key = hash_hkdf('sha256', $key, AES256_KEY_BYTES, AES256_NAME);48+ $nonce = substr($str, 0, AES256_NONCE_BYTES);49+ $tag = substr($str, AES256_NONCE_BYTES, AES256_TAG_BYTES);50+ $cipherText = substr($str, AES256_NONCE_BYTES + AES256_TAG_BYTES);51+ return openssl_decrypt(52+ $cipherText,53+ AES256_NAME,54+ $key,55+ OPENSSL_RAW_DATA,56+ $nonce,57+ $tag,58+ ''59+ );60+/*61$key = array_values(unpack("V*", pack("H*", md5($key))));62$v = str2long($str, false);63$n = count($v) - 1;64@@ -110,4 +144,5 @@65$sum = int32($sum - 0x9E3779B9);66}67return long2str($v, true);68+*/69}707172