PHP: stringEncodeOrDecode()
Autor: Ralf v.d.Mark
eingetragen: Freitag, 02. Januar 2026 um 18:09 Uhr (1/2026 Kalenderwoche)
geändert: Freitag, 02. Januar 2026 um 18:09 Uhr (1/2026 Kalenderwoche)
Keywords: string Encode Decode Verschleiert
Kategorien: PHP,
Text:
Verschleiert einen STING, um ihn an eine URL anzuhängen.
Achtung: Diese Funktion muss mit der aufrufenden identisch sein!
Quellcode:
/**
* Soll einen STING verschleiern und an eine Url hängen können.
* Achtung: Diese Funktion muss mit der aufrufenden identisch sein!
*
* @param string (Zeichenkette die ver- oder entschleiert werden soll)
* @param bool (true = codieren, false = decodieren)
*
* @return string (fertig behandelte Zeichenkette) * */
function stringEncodeOrDecode($string, $encode = true)
{
if (empty($string)) {
return null;
}
// WICHTIG: Nutze einen festen Schlüssel aus deiner config.php
$geheimnis = "DEIN_SUPER_GEHEIMER_SCHLUESSEL_123456!";
$methode = "aes-256-ctr";
if ($encode === true) {
$string = strip_tags($string);
$ivLaenge = openssl_cipher_iv_length($methode);
$iv = openssl_random_pseudo_bytes($ivLaenge);
$verschluesselt = openssl_encrypt($string, $methode, $geheimnis, 0, $iv);
// Wir nutzen base64, ersetzen aber nur die URL-kritischen Zeichen + und /
// Das = am Ende lassen wir stehen oder behandeln es sauber.
$base64 = base64_encode($iv . $verschluesselt);
return str_replace(['+', '/', '='], ['-', '_', ''], $base64);
} else {
// Beim Dekodieren müssen wir die Zeichen zurücktauschen
$suche = ['-', '_'];
$ersetze = ['+', '/'];
$relativSichererString = str_replace($suche, $ersetze, $string);
// Base64 Padding korrigieren, falls = entfernt wurden
$nachfuellen = strlen($relativSichererString) % 4;
if ($nachfuellen) {
$relativSichererString .= str_repeat('=', 4 - $nachfuellen);
}
$data = base64_decode($relativSichererString);
if ($data === false) return null;
$ivLaenge = openssl_cipher_iv_length($methode);
$iv = substr($data, 0, $ivLaenge);
$verschluesselterText = substr($data, $ivLaenge);
$entschluesselt = openssl_decrypt($verschluesselterText, $methode, $geheimnis, 0, $iv);
return $entschluesselt ?: null;
}
}//ENDE: function stringEncodeOrDecode(...)