Смешайте две строки в одну длинную строку PHP

У меня две строки, и я хотел бы смешать символы из каждой строки в одну большую строку, как я могу сделать это в PHP? Я могу поменять местами символы, но мне нужно что-то еще сложный, так как это можно было бы догадаться.

И, пожалуйста, не говорите, что md5 () достаточно и необратимо. :)

$string1 = '9cb5jplgvsiedji9mi9o6a8qq1';//session_id()
$string2 = '5d41402abc4b2a76b9719d911017c592';//md5()

Спасибо за любую помощь.

Обновлено: Ах, извините, Роб. Было бы здорово, если бы было решение, в котором это была бы просто функция, которой я мог бы передать две строки, а она возвращала бы строку.

Возвращенная строка должна содержать обе предыдущие строки. Не просто конкатенация, но и символы каждой строки смешиваются в одну большую.

Не могли бы вы уточнить свои требования? Что вы имеете в виду, «смешайте строки вместе» и какие свойства вы хотите, чтобы результат имел?

Rob 05.01.2009 16:51

Требуются дополнительные пояснения: хотите ли вы получить обратно отдельные значения?

Rob 05.01.2009 17:02

Нет, в этом нет необходимости - я просто хотел создать уникальный идентификатор, чтобы я мог сохранить его в БД. :)

Abs 05.01.2009 17:33

Если вам просто нужен уникальный идентификатор, просто используйте UUID, доступный через uniqid ()

TravisO 06.01.2009 21:03

md5 подходит для коротких струн с длинной солью (чем длиннее, тем лучше). Проблема с md5 - это проблемы коллизии для входных строк разной длины (которые есть во всех хэш-алгоритмах, только md5 имеет более короткие строки, чем большинство). md5 подходит для существующих проектов с солью, но используйте sha1 / etc для нового prj

OIS 14.04.2009 21:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
2 867
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

Если вы хотите создать защищенную от несанкционированного доступа строку, удобочитаемую, добавьте к ней безопасный хэш. MD5 действительно выходит из моды, поэтому попробуйте sha1. Например

$salt = "secret";
$hash=sha1($string1.$string2.$salt);
$separator = "_";
$str=$string1.$separator.$string2.$separator.$hash;

Если вам нужна строка, которую не могут прочитать люди, зашифруйте ее - обратите внимание на расширение mcrypt, которое предлагает множество опций.

Не используйте функции шифрования для хеширования. Шифрование может быть расшифровано в отличие от хеширования, которое «предполагается» односторонним.

Eran Galperin 05.01.2009 17:23

Я думаю, вы хотели написать строку 2 как: $ hash = sha1 ($ string1. $ String2. $ Salt);

GloryFish 05.01.2009 18:55

Если я чего-то не упустил, если вы хотите объединить эти значения в уникальное значение, почему бы не сделать sha1 (string1, string2);

Используйте один из вариантов SHA функции хэш (). Sha2 или sha256 должно быть достаточно и, безусловно, намного лучше, чем все, что вы могли придумать.

Я предполагаю, что вам нужно что-то обратимое, чтобы вы могли вернуть эти значения. Быстрый и грязный метод дальнейшего затемнения этих двух строк заключается в их кодировании в base64:

base64_encode($string1 . $string2);

Всем спасибо. Я полностью забыл о SHA1 - слишком увлекся решением проблемы, что я забыл, что еще там было. :)

Ну если не md5 (), то sha1 (). :)

Как бы то ни было, возможности покалечить безграничны, выбирайте свой яд.

Что бы я сделал, если бы я действительно хотел сделать что-то подобное (что иногда может быть полезно), я бы добавил еще один элемент, выбранный случайным образом, и перетасовал им строку md5. и запишите в него случайный элемент.

Например, давайте добавим к каждому символу md5 случайное 2-значное число, которое мы затем разделим на цифры и добавим 1-ю цифру к результирующей строке и 2-ю цифру - добавим к ней.

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

Я посетил популярный сайт тематических объявлений, на котором указаны номера телефонов рекламодателей, и у вас есть возможность при просмотре определенного объявления найти все объявления с одним и тем же номером телефона. Однако теперь они закодировали строку поиска, поэтому вы ищете не? Phone = 123123, а что-то вроде? Phone == FFYx23 =.

Если бы они этого не сделали, я мог бы для своих целей выяснить, а не проверять рекламу, ЕСЛИ пользователь с телефоном 123123 разместил какие-либо объявления на сайте.

Если вы хотите проверить целостность и подлинность сообщения с помощью хеширования - возможно, вы захотите взглянуть на HMAC - в PHP есть множество реализаций, использующих как SHA1, так и MD5:

http://en.wikipedia.org/wiki/HMAC

Обновлено: Фактически, в PHP теперь есть функция для этого:

http://us3.php.net/manual/en/function.hash-hmac.php

Другие вопросы по теме