2012-02-26 3 views
2

Я почесываю голову на этом, даже если это не должно быть так сложно ... Я пытаюсь передать электронное письмо с помощью строки запроса GET NOT POST Я хочу замаскировать это письмо Я действительно не забочусь о наличии хорошего шифрования или чего-либо еще, пока письмо не отображается в URL-адресе ... В любом случае я пытался его зашифровать и расшифровать с помощью mcrypt_generic. Проблема, с которой я столкнулась, когда она зашифровывается, преобразует электронную почту в различные символы, такие как: «ñ¯üŸPsúœœ á`agœ» Я хочу вернуть обычный буквенно-цифровой символ, поэтому я пытаюсь сделать hex2bin, и это отлично работает проблема в php5 отсутствует bin2hex !!! и я пробовал функции, которые я нашел в Интернете, чтобы вернуть это изменение, и оно работает настолько, насколько вы видите, но если вы сравниваете строки в выражении if, они не совпадают, конечно, когда я его расшифровываю, он не возвращается то же самое значение, которое я принял изначально. В любом случае мне было интересно, может ли кто-нибудь дать мне несколько советов о том, как я могу отправить электронное письмо через GET без чтения электронной почты, а затем вернуться к нормальному состоянию, когда параметр будет прочитан моим кодом.php query string parameter

Это мои методы шифрования и конвертер из функции HEX2BIN:

function encrypt($data) 
{ 
$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, ''); 
if (mcrypt_generic_init($cipher, _QRYKEY, _IVKEY) != -1) 
{ 
    $encrypted_data = mcrypt_generic($cipher,$data); 
    mcrypt_generic_deinit($cipher); 
} 

return bin2hex($encrypted_data); 
} 

function decrypt($data) 
{ 
$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, ''); 
if (mcrypt_generic_init($cipher, _QRYKEY, _IVKEY) != -1) 
{ 
    $decrypted_data = mdecrypt_generic($cipher,hex2bin($data)); 
    mcrypt_generic_deinit($cipher); 
} 

return $decrypted_data; 
} 

function hex2bin($h) 
{ 
if (!is_string($h)) return null; 

$r=''; 
for($a=0; $a<strlen($h); $a+=2) 
{ 
    $r.=chr(hexdec($h{$a}.$h{($a+1)})); 
} 

return $r; 
} 
+0

Где ваш код, где вы на самом деле шифрование электронной почты и извлечение строки ПОЛУЧИТЬ? –

+0

Вы пробовали base64? Это не шифрование, а работа. – rodrigoap

+0

Если вы хотите альтернативы hex2bin и bin2hex, вы можете попробовать сыграть с «пакетом» и «распаковать» http://www.php.net/manual/en/function.pack.php – Optimist

ответ

4

Использование base64_encode() для кодирования ничего в текстовом безопасном формате и base64_decode(), чтобы получить исходные данные обратно

+0

не могу поверить, что это было именно так ... я знал, что это было намного проще, чем все, что я делал, но я не мог нанести на него свой палец ... спасибо! –

2

Просто использовать urlencode() для преобразования всех "ñ¯üŸPsúœœ á agœ characters before sending them into the URL and and urldecode() `их с другой стороны.

http://php.net/manual/en/function.urlencode.php

+0

это не так, но это не должно быть проблемой в этом примере. –

+0

Я просто проверил его и, похоже, это бинарный сейф, поэтому его можно использовать в качестве решения. Вот почему я удалил свой комментарий ;-) – zerkms

+0

:) спасибо за двойную проверку. Я на самом деле искал его и нашел случайную ссылку, предполагающую, что это не так, но это полезно знать! –