<?php
/**
 * Encryption Key Generator
 * Run this script to generate a secure encryption key for your environment
 */

// Load environment variables from .env file
if (file_exists('.env')) {
    $envLines = file('.env', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    foreach ($envLines as $line) {
        if (strpos($line, '=') !== false && strpos($line, '#') !== 0) {
            list($key, $value) = explode('=', $line, 2);
            putenv(trim($key) . '=' . trim($value));
        }
    }
}

// Include the encryption class
require_once 'api/middleware/DataEncryption.php';

echo "🔐 GENERATEUR DE CLE D'ENCRYPTION AES-256\n";
echo "=============================================\n\n";

// Generate a secure encryption key
$encryptionKey = DataEncryption::generateKey();

echo "✅ Clé d'encryption générée avec succès !\n\n";

echo "📋 CLE D'ENCRYPTION (à copier dans votre .env):\n";
echo "=============================================\n";
echo "ENCRYPTION_KEY=" . $encryptionKey . "\n\n";

echo "📋 Instructions:\n";
echo "==============\n";
echo "1. Copiez la clé ci-dessus\n";
echo "2. Ajoutez-la à votre fichier .env :\n";
echo "   ENCRYPTION_KEY=" . $encryptionKey . "\n";
echo "3. Redémarrez votre serveur web\n";
echo "4. Testez avec le script de test ci-dessous\n\n";

echo "🧪 TEST DE L'ENCRYPTION:\n";
echo "=======================\n";

// Test the encryption
$testData = "Données sensibles de test";
echo "Données originales: " . $testData . "\n";

try {
    $encrypted = DataEncryption::encrypt($testData);
    echo "Données chiffrées: " . substr($encrypted, 0, 50) . "...\n";

    $decrypted = DataEncryption::decrypt($encrypted);
    echo "Données déchiffrées: " . $decrypted . "\n";

    $testResult = DataEncryption::testEncryption();
    echo "Test de chiffrement: " . ($testResult ? "✅ RÉUSSI" : "❌ ÉCHEC") . "\n\n";

} catch (Exception $e) {
    echo "❌ Erreur lors du test: " . $e->getMessage() . "\n\n";
}

echo "🎯 UTILISATION DANS LE CODE:\n";
echo "===========================\n";
echo "// Chiffrer avant stockage\n";
echo "\$encryptedData = DataEncryption::encryptForStorage(\$sensitiveData);\n\n";
echo "// Déchiffrer après récupération\n";
echo "\$decryptedData = DataEncryption::decryptFromStorage(\$encryptedData);\n\n";
echo "// Hasher un mot de passe\n";
echo "\$hashedPassword = DataEncryption::hashPassword(\$password);\n\n";

echo "⚠️  IMPORTANT:\n";
echo "=============\n";
echo "- Gardez cette clé SECURE et confidentielle\n";
echo "- Sauvegardez-la en lieu sûr\n";
echo "- Ne la partagez jamais\n";
echo "- En cas de perte, les données chiffrées seront irrécupérables\n\n";

echo "🎉 Configuration terminée !\n";
?>
