<?php

namespace App\Helpers;

class UuidEncryptionHelper
{
    /**
     * Clave secreta simétrica compartida con el frontend
     */
    private static $key = 'OrionSecureDeviceKey2026';

    /**
     * Desencripta un UUID cifrado desde el frontend
     * Algoritmo: URL-Safe Base64 Decode + XOR con clave compartida
     */
    public static function decrypt($encryptedText)
    {
        if (empty($encryptedText)) {
            return $encryptedText;
        }

        try {
            // 1. Reconstruir el base64 estándar reemplazando caracteres seguros de URL
            $data = str_replace(['-', '_'], ['+', '/'], $encryptedText);
            
            // Añadir relleno de '=' si es necesario
            $mod4 = strlen($data) % 4;
            if ($mod4) {
                $data .= substr('====', $mod4);
            }
            
            $decoded = base64_decode($data);
            if ($decoded === false || $decoded === '') {
                return $encryptedText;
            }

            // 2. Aplicar la operación XOR con la clave compartida
            $result = '';
            $keyLength = strlen(self::$key);
            $decodedLength = strlen($decoded);
            
            for ($i = 0; $i < $decodedLength; $i++) {
                $result .= $decoded[$i] ^ self::$key[$i % $keyLength];
            }

            return $result;
        } catch (\Exception $e) {
            // Ante cualquier fallo, retornar el texto tal como ingresó
            return $encryptedText;
        }
    }
}
