1

Str rot13: примеры (PHP)

Функция str_rot13 для шифрования строк в PHP
Раздел: Работа со строками
str_rot13(string string): string
Функция str_rot13 в PHP

Функция str_rot13 выполняет преобразование строки с использованием шифра ROT13. Этот алгоритм заменяет каждую латинскую букву на букву, расположенную на 13 позиций дальше в алфавите. Преобразование работает в обе стороны: повторное применение функции к уже обработанной строке возвращает исходный текст.

Назначение и применение

Основное использование функции связано с простым сокрытием текста от беглого просмотра, например, в конфигурационных файлах или для легкой обфускации данных. ROT13 не является криптографическим методом защиты и не должен использоваться для шифрования конфиденциальной информации.

Синтаксис и аргументы

Функция имеет простой синтаксис с одним обязательным параметром:

str_rot13(string $string): string

$string - исходная строка для преобразования. Функция возвращает модифицированную строку, где все латинские символы a-z и A-Z сдвинуты на 13 позиций. Остальные символы (цифры, кириллица, знаки препинания) остаются без изменений.

Базовые примеры использования
Простое преобразование
echo str_rot13('Hello World');
Uryyb Jbeyq
Обратное преобразование
echo str_rot13('Uryyb Jbeyq');
Hello World
Сохранение не-латинских символов
echo str_rot13('Привет 123! ABC');
Привет 123! NOP
Похожие функции в PHP
strtr для произвольных замен

Функция strtr позволяет выполнять замены по заданному массиву соответствий. Может использоваться для создания более сложных шифров замены.

echo strtr('Hello', 'abcdefghijklmnopqrstuvwxyz', 'nopqrstuvwxyzabcdefghijklm');
Uryyb
base64_encode для кодирования

Функция base64_encode обеспечивает более надежное сокрытие данных, но выводит результат в формате, отличном от читаемого текста.

echo base64_encode('Secret');
U2VjcmV0
hash для хеширования

Функции семейства hash выполняют криптографическое хеширование без возможности обратного преобразования.

ROT13 стоит выбирать для задач легкого сокрытия текста, где важна читаемость после обратного преобразования без использования ключей. Для серьезной защиты данных необходимы другие методы.

Типичные ошибки
Ожидание шифрования кириллицы

Наиболее частая ошибка - попытка использовать ROT13 для не-латинских символов.

echo str_rot13('Привет мир');
Привет мир
Путаница с кодировками

При работе с многобайтовыми кодировками могут возникать проблемы, если строка содержит символы вне ASCII.

echo str_rot13('Café'); // символ 'é' останется без изменений
Pnsé
Неправильное понимание безопасности

Использование ROT13 для защиты конфиденциальных данных является серьезной ошибкой безопасности.

Изменения в версиях PHP

Функция str_rot13 присутствует в PHP с версии 4.2.0. За время существования не претерпела значительных изменений в поведении или синтаксисе. В PHP 8 была улучшена общая производительность интерпретатора, что косвенно могло повлиять на скорость работы функции, но ее API остался неизменным.

Расширенные примеры
Обработка массивов

Применение функции ко всем элементам массива с помощью array_map.

Пример php
$messages = ['Hello', 'Test', 'PHP'];
$encoded = array_map('str_rot13', $messages);
print_r($encoded);
Array
(
    [0] => Uryyb
    [1] => Grfg
    [2] => CUC
)
Цепочка преобразований

Многократное применение функции возвращает исходную строку через четное число вызовов.

Пример php
$text = 'Secret Message';
$once = str_rot13($text);
$twice = str_rot13($once);
echo $once . ' | ' . $twice;
Frperg Zrffntr | Secret Message
Комбинирование с base64

Создание простой двухэтапной обфускации.

Пример php
function obscure($str) {
    return str_rot13(base64_encode($str));
}
function clarify($str) {
    return base64_decode(str_rot13($str));
}
echo obscure('Data');
QnFn
Фильтрация контента

Использование для временного скрытия спойлеров в тексте.

Пример php
$spoiler = 'Итог фильма: главный герой был призраком';
$hidden = str_rot13($spoiler);
echo 'Спойлер: ' . $hidden . '<br>';
echo 'Раскрыть: ' . str_rot13($hidden);
Спойлер: Ыттф туйьнз: туншызй тубй цнк чымнфэнцб
Раскрыть: Итог фильма: главный герой был призраком
ROT13 для диапазонов символов

Демонстрация работы только с определенными диапазонами символов.

Пример php
echo str_rot13('A-M -> N-Z, a-m -> n-z');
N-Z -> A-M, n-z -> a-m
Аналоги в других языках

Str rot13 в Python

Модуль codecs предоставляет функцию encode с кодеком 'rot_13'.

import codecs
print(codecs.encode('Hello', 'rot_13'))
Uryyb

Str rot13 в Javascript

В JavaScript отсутствует встроенная функция, но реализация может быть создана с использованием метода replace.

function rot13(str) {
    return str.replace(/[a-z]/gi, letter => String.fromCharCode(letter.charCodeAt(0) + (letter.toLowerCase() <= 'm' ? 13 : -13)));
}
console.log(rot13('Hello'));
Uryyb

Str rot13 в MySQL

Прямого аналога нет, но можно создать пользовательскую функцию. В PostgreSQL существует функция translate для похожих задач замены символов.

Отличия от PHP

В отличие от PHP, где функция является встроенной, в большинстве других языков требуется самостоятельная реализация или подключение дополнительных модулей. Алгоритм ROT13 везде работает идентично для латинского алфавита.

PHP str_rot13 function comments

En
Str rot13 Perform the rot13 transform on a string