У меня две строки, и я хотел бы смешать символы из каждой строки в одну большую строку, как я могу сделать это в PHP? Я могу поменять местами символы, но мне нужно что-то еще сложный, так как это можно было бы догадаться.
И, пожалуйста, не говорите, что md5 () достаточно и необратимо. :)
$string1 = '9cb5jplgvsiedji9mi9o6a8qq1';//session_id()
$string2 = '5d41402abc4b2a76b9719d911017c592';//md5()
Спасибо за любую помощь.
Обновлено: Ах, извините, Роб. Было бы здорово, если бы было решение, в котором это была бы просто функция, которой я мог бы передать две строки, а она возвращала бы строку.
Возвращенная строка должна содержать обе предыдущие строки. Не просто конкатенация, но и символы каждой строки смешиваются в одну большую.
Требуются дополнительные пояснения: хотите ли вы получить обратно отдельные значения?
Нет, в этом нет необходимости - я просто хотел создать уникальный идентификатор, чтобы я мог сохранить его в БД. :)
Если вам просто нужен уникальный идентификатор, просто используйте UUID, доступный через uniqid ()
md5 подходит для коротких струн с длинной солью (чем длиннее, тем лучше). Проблема с md5 - это проблемы коллизии для входных строк разной длины (которые есть во всех хэш-алгоритмах, только md5 имеет более короткие строки, чем большинство). md5 подходит для существующих проектов с солью, но используйте sha1 / etc для нового prj






Если вы хотите создать защищенную от несанкционированного доступа строку, удобочитаемую, добавьте к ней безопасный хэш. MD5 действительно выходит из моды, поэтому попробуйте sha1. Например
$salt = "secret";
$hash=sha1($string1.$string2.$salt);
$separator = "_";
$str=$string1.$separator.$string2.$separator.$hash;
Если вам нужна строка, которую не могут прочитать люди, зашифруйте ее - обратите внимание на расширение mcrypt, которое предлагает множество опций.
Не используйте функции шифрования для хеширования. Шифрование может быть расшифровано в отличие от хеширования, которое «предполагается» односторонним.
Я думаю, вы хотели написать строку 2 как: $ hash = sha1 ($ string1. $ String2. $ Salt);
Если я чего-то не упустил, если вы хотите объединить эти значения в уникальное значение, почему бы не сделать sha1 (string1, string2);
Я предполагаю, что вам нужно что-то обратимое, чтобы вы могли вернуть эти значения. Быстрый и грязный метод дальнейшего затемнения этих двух строк заключается в их кодировании в 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 теперь есть функция для этого:
Не могли бы вы уточнить свои требования? Что вы имеете в виду, «смешайте строки вместе» и какие свойства вы хотите, чтобы результат имел?