Большое спасибо за «конечную цель» - это поможет нам убедиться, что вы не совершите глупостей случайно.
Шифрование - очень сложная тема. Вы не должны писать свою собственную процедуру шифрования. Используйте законченное, готовое решение.
Mcrypt - лучшее расширение для шифрования PHP. Mcrypt поддерживает несколько общих шифров , включая AES ("Rijndael"). Шифрование чертовски легко - используйте режим "CBC" для вашего файла.
Шифр Vigenère - это шифр замещения 460 лет, основанный на простой справочной таблице.
Это объясняет все по одному персонажу за раз.
Хотя вы можете читать весь файл по одному байту за раз, вам может быть удобнее работать со строкой. Вы можете прочитать весь файл в переменную (через file_get_contents
или что-либо еще), а затем использовать substr
или синтаксис подстроки квадратной скобки , чтобы прочитать строку одним байтом в время. Помните, строки PHP - это просто списки байтов.
Учитывая, что $data
является полными данными в файле, вы можете обработать каждый байт следующим образом:
$length = strlen($data);
for($i = 0; $i < $length; $i++) {
$byte = $data[$i];
// Or
$byte = substr($data, $i, 1);
// Process the byte here.
}
Это практично только для небольших файлов (меньше, чем несколько мегабайт), так как требует загрузки всего файла в память.
Я хочу распечатать код acscii (HEX) для этого байта
Вы можете получить десятичное значение 1045 *, используя ord
, а затем преобразовать его в шестнадцатеричную строку, используя dechex
:
$hex_value = dechex(ord($byte));
После подстановки вы можете повернуть его вспять - используйте hexdec
, чтобы перейти от шестнадцатеричного числа к десятичному, затем chr
, чтобы перейти от десятичного числа к байту:
$converted_byte = chr(hexdec($ciphered_hex));