Загрузка данных



<?php

function encrypt(string $text, string $key): string
{
    $keyLength = strlen($key);
    $textLength = strlen($text);
    $encryptedText = '';

    for ($i = 0; $i < $textLength; $i++) {
        $char = $text[$i];
        $keyChar = $key[$i % $keyLength]; // Повторяем ключ, если он короче текста

        // Простой XOR шифрование
        $encryptedChar = chr(ord($char) ^ ord($keyChar));
        $encryptedText .= $encryptedChar;
    }

    // Для представления в виде строки, часто используют base64 после шифрования
    return base64_encode($encryptedText);
}

function decrypt(string $encryptedText, string $key): string
{
    // Сначала декодируем из base64, если он использовался при шифровании
    $encryptedText = base64_decode($encryptedText);

    $keyLength = strlen($key);
    $textLength = strlen($encryptedText);
    $decryptedText = '';

    for ($i = 0; $i < $textLength; $i++) {
        $char = $encryptedText[$i];
        $keyChar = $key[$i % $keyLength];

        // XOR операция обратна сама себе
        $decryptedChar = chr(ord($char) ^ ord($keyChar));
        $decryptedText .= $decryptedChar;
    }

    return $decryptedText;
}

// Пример использования
$originalString = "Это секретное сообщение!";
$encryptionKey = "mysecretkey";

$encrypted = encrypt($originalString, $encryptionKey);
echo "Оригинальная строка: `$originalString`\n";
echo "Ключ: `$encryptionKey`\n";
echo "Зашифрованная строка: `$encrypted`\n";

$decrypted = decrypt($encrypted, $encryptionKey);
echo "Расшифрованная строка: `$decrypted`\n";

?>