<?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";
?>