создать простой код шифрования в PHP, заменяя символы - PullRequest
0 голосов
/ 03 октября 2018

Я новичок в PHP.

Я хочу сделать в PHP простую функцию шифрования, которая изменяет строку на новую строку путем изменения символов.

Для этого я создаю двамассивы символов.

В первом массиве я назначаю все символы и сортирую их следующим образом:

$true_chars = array('a','b','c','d','e');

В другом массиве я меняю положение символов.

$fake_chars = array('c','d','a','e','b');

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

Например, моя строка равна acdc, функция шифрования сравнивает acdc символов попервый массив, чтобы получить истинные индексы (если нужно), а затем заменить на второй индекс массива и изменить его на caea.

как на самом деле я могу это сделать?

1 Ответ

0 голосов
/ 03 октября 2018

Начните с создания массива, который сопоставляет исходный символ с закодированным символом:

$chars = [
    'a' => 'c',
    'b' => 'd',
    'c' => 'a',
    'd' => 'e',
    'e' => 'b',
];

Затем вы перебираете строку и заменяете символы:

$original  = 'acdc';

// Encrypt
$encrypted = '';

for ($i = 0; $i < strlen($original); $i++) {
    // If we find the character in our mapping array, use the mapped character.
    // If not, let's use the original character.
    $encrypted .= array_key_exists($original[$i], $chars) 
        ? $chars[$original[$i]]
        : $original[$i];
}

print_r($encrypted);
// caea

Для расшифровкинам просто нужно проверить, существует ли символ в массиве, и использовать вместо него ключ:

// Decrypt
$decrypted = '';
for ($i = 0; $i < strlen($encrypted); $i++) {
    // Find the correct key
    $key = array_search($encrypted[$i], $chars);

    // If the character existed, use the key.
    // If not, use the original character.
    $decrypted .= $key !== false 
        ? $key
        : $encrypted[$i];
}

print_r($decrypted);
// acdc

Демонстрация: https://3v4l.org/vQAZj

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