Мне нужно создать простой метод хэширования для передачи некоторых данных в URL. Это не должно быть очень безопасным, это просто не должно быть очевидно для большинства людей.
Хэш должен содержать числовой идентификатор отправителя и идентификатор получателя, и я должен иметь возможность декодировать данные после прочтения добавленного хэша.
Есть идеи? Я бы хотел, чтобы хэш был как можно короче, просто потому, что этот URL-адрес предназначен для совместного использования через IM, электронную почту и т. Д.
Хеш – единственный способ. Если вы хотите его расшифровать, вы должны зашифровать его. Попробуйте mcrypt с одним из них .
Для небезопасных материалов вы можете попробовать base64_encode , вы также можете base_convert каждый числовой идентификатор от 10 до 36 цифр или около того. Также может помочь умножение чисел с помощью секретной константы.
$obscurity = base_convert($recipientId * 42, 10, 36) . ':' . base_convert($senderId * 42, 10, 36)
Попробуйте кодирование / декодирование base64. вместе с опцией apache «Multiviews» или apache mod_rewrite сделают ваши URL-адреса похожими:
http://mysite.com/messages/[encoded string here]
base64 определенно должен сделать трюк, если вы хотите его снова декодировать.
Обратите внимание, что это не «хэш», хэш обычно означает одностороннее шифрование.
$ senderId = 1234; $ recipientId = 5678; $ myString = $ senderId. ":". $ RecipientId; echo base64_encode ($ myString);
Вы можете использовать шифрование, как указано @OIS.
Или вы можете использовать хэш и хранить значения хэша в базе данных, привязанной к идентификатору отправителя и идентификатору получателя. PHP имеет встроенные md5()
и sha1()
.