Если ваш файл состоит в основном из цифр, вы можете попробовать XORing, скажем, с '0'
. Это сопоставит все числа с непечатными управляющими кодами, что затруднит чтение файла без шестнадцатеричного редактора.
$n = strlen($str);
for ($i = 0; $i < $n; $i++) $str[$i] = $str[$i] ^ '0';
На практике, скорее всего, будет быстрее избежать цикла, используя либо str_repeat()
:
$str ^= str_repeat('0', strlen($str));
или strtr()
:
$from = $to = "x";
for ($i = 0; $i < 256; $i++) {
$from[$i] = chr($i);
$to[$i] = chr($i) ^ '0';
}
$str = strtr($str, $from, $to);
Из приведенных выше решений последнее представляется наиболее быстрым для длинных строк с пропускной способностью около 10 Мбит / с на моем компьютере. Решение str_repeat()
хорошо работает для довольно коротких строк, но страдает от чрезмерного использования памяти с более длинными строками.
Конечно, ни одно из этих решений не обеспечивает какой-либо защиты от кого-либо с помощью шестнадцатеричного редактора и двух ячеек мозга, которые можно потереть вместе. Для этого вам понадобится настоящее шифрование.