2015-07-09 7 views
0

Есть ли способ хэш-строки и un-hash it later?Hash string и retrieve from hash later

Например, я хочу получить адрес электронной почты, чтобы создать уникальную ссылку, и получить адрес электронной почты при посещении ссылки.

Это больше об обфускации, чем хеширование, как вы можете видеть.

+0

Нет, вы ничего не можете разобрать. Однако вы можете кодировать и декодировать строку. – Daan

+0

use mcrypt source: http://php.net/manual/en/book.mcrypt.php –

ответ

1

Вы не можете хэширования и unhash строку, но может использовать base64_encode и base64_decode сделать подобную вещь:

<?php 
$str = 'This is an encoded string'; 
echo base64_encode($str); 
?> 

Приведенный выше пример выведет:

VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw== 

Вы можете расшифровать его:

<?php 
$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw=='; 
echo base64_decode($str); 
?> 

Приведенный выше пример будет выводить:

This is an encoded string 

Как и в руководстве PHP.net:

http://php.net/manual/en/function.base64-encode.php

http://php.net/manual/en/function.base64-decode.php

+0

Есть ли способ сделать кодировку короче, сохраняя при этом свои данные? – jlmmns

+1

Ну почему бы не создать случайную уникальную строку в базе данных для ссылки на URL-адрес, тогда, когда вам понадобится ссылка, вытащите из db, чтобы получить URL-адрес –

0

Там нет unhash. хэш - одностороннее шифрование. для этого вы можете сохранить электронную почту и хеш в таблице и выбрать адрес электронной почты, где хеш равен чему-то.

id, email, hash 
1 [email protected] m3jf9s... 


SELECT `email` from `activation_table` WHERE `hash` = 'm3jf9s...'; 

затем отобразите его на странице.