Я новичок в PHP.
Я хочу сделать простую функцию шифрования в PHP, которая изменяет строку на новую строку путем изменения символов.
Для этого я создаю два массива символов.
В первом массиве я назначаю все символы и сортирую их следующим образом:
$true_chars = array('a','b','c','d','e');
В другом массиве я меняю положение символов.
$fake_chars = array('c','d','a','e','b');
Моя цель состоит в том, чтобы, когда функция получила правильную строку, изменила строковые символы, заменив второй массив.
Например, моя строка acdc
функция шифрования сравнивает acdc
символы в первом массиве, чтобы получить истинные индексы (если нужно), а затем заменить на второй индекс массива и изменить его на caea
,
как на самом деле я могу это сделать?
Начните с создания массива, который отображает исходный символ на закодированный символ:
$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
Других решений пока нет …