Я пытаюсь зашифровать некоторые из своих паролей, используя алгоритм шифрования XOR. Я протестировал его на CyberChef, но не знаю, как преобразовать его из PHP. Я с нетерпением жду возможности помочь. Большое спасибо. Строка XOR HEX 32
Я хочу узнать больше. благодарить.
Вы не должны шифровать пароли. Их следует хэшировать.
Помимо пароля, я хочу узнать его, чтобы иметь возможность работать на многих других работах. Я хочу научиться этому. если возможно, пожалуйста, помогите мне, не спрашивайте меня больше о том, почему я не использую другое кодирование .... я хочу учиться. пожалуйста.
Чему именно вы хотите научиться? С какой конкретно частью у вас проблемы?
я хочу обработать "мою тестовую строку" в PHP, чтобы получить вывод, как на изображении: i.stack.imgur.com/X54WH.jpg
Вы вообще знаете, что такое XOR?
Нет, на самом деле я не знаю. пожалуйста, проинструктируйте меня. благодарить.
Введите XOR в Google; нажмите на ссылку Википедии; прочитайте страницу.
так что это не будет работать с PHP?
Это звучит как интересное учебное упражнение, но если это действительно то, чего вы хотите, вам нужно пойти и немного поучиться. Прямо сейчас здесь нет особого вопроса, просто расплывчатая просьба к нам провести все ваши исследования за вас. Узнайте, что означает «xor», поищите способы сделать это в PHP, а затем вернитесь сюда, если у вас есть вопрос конкретный, как обсуждалось на Как спросить.
Я проконсультировался и попытался использовать несколько доступных источников: github.com/sathoro/php-xor-шифр, но я не понимаю, что такое HEX-ключ 32 и как это сделать.
Добро пожаловать в Stack Overflow. Когда вы спрашиваете группу профессиональных программистов, как «зашифровать пароль», вы поднимаете много красных флажков. Мы, профессионалы, тратим много времени, пытаясь замедлить киберпреступников. Зашифрованные пароли, особенно с простыми для взлома шифрами, такими как XOR, не замедляют работу киберпреступников. Даже не немного. Вот почему вы получаете от нас столько критики. Шифры XOR описаны здесь. Они зависят от безопасный обмен ключами для защиты данных.
Это помогает начать с основных задействованных структур данных.
Ваша цель должен использовать секретный ключ для преобразования вашего простой текст — сообщения, которое вы хотите сохранить в секрете — в зашифрованный текст. По определению ваш обычный текст легко понять противнику, а ваш зашифрованный текст — нет.
Затем остальная часть вашей цели — использовать ключ для преобразования зашифрованного текста обратно в обычный текст. XOR — это симметричный шифр: он использует один и тот же ключ для шифрования и дешифрования.
Базовые структуры данных
Например, у вас есть текстовые строки, как ATTACK
.
Вам нравится массивы
array( 65, 84, 84, 65, 67, 75)
И у вас есть строки база 64закодированный, например
base64_encode( "ATTACK" ); //QVRUQUNL
Ваши структуры данных
Допустим, ваше сообщение АТАКА. (Разумеется, такая криптография началась с военных приложений.) Это массив чисел. Ваш пример php преобразует ваше сообщение в массив значений символов ASCII. Этот немного кода делает это. Он использует функцию порядок() для преобразования буквы в число, называемое кодовой точкой. Запустить его.
$plaintext = 'ATTACK';
$plaintextASCII = [];
foreach( str_split( $plaintext ) as $letter) {
$plaintextAscii[] = ord( $letter );
}
print_r( $plaintextAscii );
Он делает то же самое, что и эта строка кода из вашего примера, но использует явный цикл, а не ярлык array_map()
.
return array_map('ord', str_split($text));
Затем вы можете изменить этот массив значений символов. Шифр XOR — способ сделать это.
Наконец, вы конвертируете его обратно в строку, используя функцию чр().
$encryptedString = '';
foreach ( $plaintextAscii as $codepoint ) {
$encryptedString .= chr( $codepoint );
}
Но, поскольку вы исказили свои кодовые точки, чтобы зашифровать их, этот $encryptedString
содержит непечатаемые символы. Таким образом, вы не можете просто вставить строку в электронное письмо или что-то в этом роде. Вместо этого вы должны кодировать строку, используя только печатные символы.
base64_encode( $encryptedString );
Это зашифрованное сообщение. Чтобы расшифровать его, вы обращаете процесс.
Это должно помочь вам понять этот пример кода.
Профессиональный совет при попытке понять алгоритм не пытайтесь использовать открывать пакеты с исходным кодом. Вместо этого посмотрите на их код и скопируйте интересные строки в свой пример кода.
Профессиональный совет получите достойную программу-отладчик, чтобы вы могли пошагово выполнять свой код.
Совет по безопасности в Интернете не используйте, повторяю, не используйте этот тип шифрования для хранения паролей людей в Интернете. Это недостаточно безопасно, чтобы замедлить киберпреступников. php имеет действительно хороший набор функций для хеширования паролей. Читайте о них здесь.
Кто-то может сказать, что этот вопрос не заслуживает ответа. Но людям, плохо знакомым с нашей профессией, иногда требуется один-два толчка в правильном направлении.
Спасибо за вашу поддержку. Я понял всю проблему, а также решил свою проблему. большое спасибо.
Есть ли причина, по которой вы не хотите использовать password_hash?