Intereting Posts
MySQL и PHP Параметр 1 как ресурс Laravel 5.1 – Ошибка несоответствия токена с помощью iframe только в браузере Safari Обрезать пробелы из изображения в PHP Вызов функции-члена функции () для не-объекта при вставке данных с использованием PHP mySQL simpleHTMLDOM Laravel, получите последний идентификатор вставки, используя Eloquent ffmpeg получить значение от cropdetect Php включает файл в другую папку, в которую входит другой файл htaccess перенаправляет все, кроме одной страницы, из html в php Использование идентификатора объекта Mongodb в качестве идентификатора документа? ловить все ошибки и перенаправлять на страницу с помощью php Создайте ObjectID объекта MongoDB с даты в прошлом с помощью драйвера PHP Многомерный массив PHP – по значению, затем по ключу? Есть ли у PHP ответ на универсальные классы стиля Java? Как отслеживать исходящие клики с помощью Javascript Glob не работает, когда имя каталога имеет специальные символы, такие как квадратные скобки ""

Шифрование Blowfish в php

Я пишу шифрование для своего приложения и веб-сайта, но я не знаю, как правильно шифровать строку в php. Расшифровка уже выполняется с помощью этого кода:

function decrypt_blowfish($data,$key){ $iv=pack("H*" , substr($data,0,16)); $key=pack("H*" , $key); $x =pack("H*" , substr($data,16)); $res = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $x , MCRYPT_MODE_CBC, $iv); return $res; } 

Я пробовал с простым:

 function encrypt_blowfish($data,$key){ $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $crypttext = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $data, MCRYPT_MODE_CBC, $iv); return $crypttext; } 

Но он возвращает strang ASCI вместо правильного кода blowfish. Может ли кто-нибудь объяснить мне, почему, и что я делаю неправильно? заранее спасибо

СН

 function decrypt_blowfish($data,$key){ $iv=pack("H*" , substr($data,0,16)); $x =pack("H*" , substr($data,16)); $res = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $x , MCRYPT_MODE_CBC, $iv); return $res; } function encrypt_blowfish($data,$key){ $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $crypttext = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $data, MCRYPT_MODE_CBC, $iv); return bin2hex($iv . $crypttext); } $string = encrypt_blowfish('hello world', 'abc123'); echo 'ENCRYPTED: ' . $string . "\n"; echo 'DECRYPTED: ' . decrypt_blowfish($string, 'abc123'); 

Попробуй это. В функции дешифрования вы конвертируете из шестнадцатеричного в двоичный, поэтому он ожидает передачи шестнадцатеричного значения. Ваша функция шифрования выводит двоичный код, поэтому вам нужно преобразовать его в hex с указанным выше изменением.