Ich habe zwei Funktionen geschrieben, um die DB-ID aus der URL mit OPENSSL zu verschlüsseln und zu entschlüsseln.
Das Verschlüsseln scheint zu funktionieren. Das Entschlüsseln gibt grundsätzlich false zurück. Weiß jemand, woran es liegt?
Ich wollte auch erreichen, dass der generierte String ausschließlich aus Buchstaben und Zahlen besteht.
Das Verschlüsseln scheint zu funktionieren. Das Entschlüsseln gibt grundsätzlich false zurück. Weiß jemand, woran es liegt?
Ich wollte auch erreichen, dass der generierte String ausschließlich aus Buchstaben und Zahlen besteht.
PHP-Code:
function encrypt($id) {
$key = '...';
$iv = '...';
$method = 'aes-128-cbc';
$options = OPENSSL_RAW_DATA;
$encrypted_id = openssl_encrypt($id, $method, $key, $options, $iv);
$encrypted_id = base64_encode($encrypted_id);
$encrypted_id = strtr($encrypted_id , '+/=_-', 'abcdxy');
$encrypted_id = strtolower($encrypted_id);
return $encrypted_id;
}
function decrypt($encrypted_id) {
$key = '...';
$iv = '...';
$method = 'aes-128-cbc';
$options = OPENSSL_RAW_DATA;
$encrypted_id = strtr($encrypted_id, 'abcdxy', '+/=_-');
$encrypted_id = base64_decode($encrypted_id);
$decrypted_id = openssl_decrypt($encrypted_id, $method, $key, $options, $iv);
if ($decrypted_id === false) {
return 'Es ist ein Fehler aufgetreten.';
exit();
} else {
$decrypted_id = (INT) $decrypted_id;
return htmlspecialchars($decrypted_id ?? '', ENT_QUOTES, "UTF-8");
}
}
$user_id_get = '';
if (isset($_GET['id'])) {
$user_id_get = decrypt($_GET['id']);
echo $user_id_get;
exit();
}
Kommentar