Решение для расшифровки в PHP - PullRequest
0 голосов
/ 13 января 2012

У меня проблема при расшифровке в PHP на веб-сервере, сбой при попытке расшифровать мойШифрование, которое хранится в базе данных, вывод расшифровки показывают в виде символа:8 ± 8 ¼ «¿> 2> ~ ë  ¥ à ™ nÃ?

вот код, который я использовал для расшифровки: шифрование / дешифрование

<?php

class MCrypt
{
private $iv = 'fedcba9876543210'; 
private $key = '0123456789abcdef';

function_construct()
{
}


function decrypt($code)
{
    //$key = $this->hex2bin($key);
    $code = $this->hex2bin($code);
    $iv = $this->iv;

    $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);

    mcrypt_generic_init($td, $this->key, $iv);
    $decrypted = mdecrypt_generic($td, $code);

    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);

    return utf8_encode(trim($decrypted));
}

protected function hex2bin($hexdata)
{
    $bindata = '';
    for ($i = 0; $i < strlen($hexdata); $i += 2)
    {
        $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
    }
    return $bindata;
}
}
?>

и вот код, который я использовал для получения зашифрованных данных из базы данных:

include ("decrypt.php");

$sql     = "SELECT * FROM Save_data";

$mcrypt = new MCrypt();
#Decrypt
$decrypted1 = $mcrypt->decrypt($exif_datetime);
echo $decrypted1; 

Ответы [ 2 ]

1 голос
/ 13 января 2012

Не видя метода шифрования, невозможно сказать, почему код работает не так, как вы ожидаете ...

return utf8_encode(trim($decrypted));

Э?Это не имеет никакого смысла.Конечно, если вам нужно изменить ISO-8859-1 на utf8, то вы так и поступите, но это никак не может быть сделано тем же способом, что и расшифровка.

когда я пытаюсь расшифровать мое шифрование, которое хранится в базе данных

При просмотре кода это означает, что зашифрованные данные хранятся в двоичном виде.В самом деле?По разным причинам имеет больше смысла в base64_encode (или преобразовании в ascii HEX) зашифрованные данные перед сохранением их в БД (и, следовательно, base64_decode перед расшифровкой).

0 голосов
/ 13 января 2012

Допустим, если ваш вывод $txt = ±8¼®¿2>~ë¥Ùnà Loréane,

, вы можете решить это с помощью кода ниже

echo utf8_encode ($ txt);

Или попробуйте добавить метатег<meta http-equiv="content-type" content="text/html;charset=utf-8" />

Надеюсь, это поможет.

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