Смешайте две строки в одну более длинную строку PHP - PullRequest
0 голосов
/ 05 января 2009

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

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

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

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

РЕДАКТИРОВАТЬ: Ах, прости Роб. Было бы замечательно, если бы было решение, где бы это была просто функция, в которую я мог бы передать две строки, и она вернула строку.

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

Ответы [ 7 ]

4 голосов
/ 05 января 2009

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

4 голосов
/ 05 января 2009

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

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

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

2 голосов
/ 05 января 2009

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

0 голосов
/ 05 января 2009

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

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

РЕДАКТИРОВАТЬ: На самом деле, PHP теперь имеет функцию для этого:

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

0 голосов
/ 05 января 2009

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

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

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

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

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

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

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

0 голосов
/ 05 января 2009

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

0 голосов
/ 05 января 2009

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

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