|
|
|
| Пример из книги:
<?php
$user_password = "asdasdas";
$key = "key";
$user_crypt = mcrypt_ecb(MCRYPT_3DES, $key, $user_password, MCRYPT_ENCRYPT);
echo "Зашифрованый пароль - ".$user_crypt;
$user_crypt = mcrypt_ecb(MCRYPT_3DES, $key, $user_crypt, MCRYPT_DECRYPT);
echo "Рапсшифрованый пароль - ".$user_crypt;
?>
|
Выдаёт ошибку:
Warning: mcrypt_ecb() [function.mcrypt-ecb]: Attempt to use an empty IV, which is NOT recommend in C:\Program Files\Apache Group\Apache2\htdocs\Sea\tmp\test.php on line 5
Зашифрованый пароль - ÃÕ5âñ}M
Warning: mcrypt_ecb() [function.mcrypt-ecb]: Attempt to use an empty IV, which is NOT recommend in C:\Program Files\Apache Group\Apache2\htdocs\Sea\tmp\test.php on line 7
Рапсшифрованый пароль - asdasdas
В чем проблема??
моя не понимать!!!! | |
|
|
|
|
|
|
|
для: Expier
(26.07.2006 в 19:24)
| | Это просто предупреждения о том, что такой подход уже успел устареть, можно просто их подавить
<?php
$user_password = "asdasdas";
$key = "key";
$user_crypt = @mcrypt_ecb(MCRYPT_3DES, $key, $user_password, MCRYPT_ENCRYPT);
echo "Зашифрованый пароль - ".$user_crypt;
$user_crypt = @mcrypt_ecb(MCRYPT_3DES, $key, $user_crypt, MCRYPT_DECRYPT);
echo "Рапсшифрованый пароль - ".$user_crypt;
?>
|
но это не рекомендуется, лучше использовать новый подход
<?php
$user_password = "asdasdas";
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);
$key = substr(md5("key"), 0, $ks);
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$user_crypt = mcrypt_generic($td, $user_password);
echo $user_crypt."<br>";
mcrypt_generic_deinit($td);
mcrypt_generic_init($td, $key, $iv);
$user_decrypt = mdecrypt_generic($td, $user_crypt);
echo $user_decrypt."<br>";
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(26.07.2006 в 22:13)
| | О, спасибо!
Попробую разобраться! | |
|
|
|
|
автор: STEVER (16.08.2006 в 23:02) |
|
|
для: cheops
(26.07.2006 в 22:13)
| | Когда выполняется mcrypt_ecb(MCRYPT_3DES, $key, $user_crypt, MCRYPT_DECRYPT);
Апач вешается и говорит что во всем виновата библиотека, в чем может быть проблемма? | |
|
|
|
|
|
|
|
для: STEVER
(16.08.2006 в 23:02)
| | А версия Apache какая и где дело происходит под Windows или Linux? | |
|
|
|
|
автор: STEVER (18.08.2006 в 19:34) |
|
|
для: cheops
(17.08.2006 в 12:12)
| | Apache 2.0 ставился Денвером, под Windows. | |
|
|
|
|
|
|
|
для: STEVER
(18.08.2006 в 19:34)
| | А расширение php_mcrypt.dll подключено? Если память не изменяет даже в стандартной поставке оригинального PHP не все нужные библиотеки входят в состав - нужно догружать. | |
|
|
|
|
автор: STEVER (20.08.2006 в 13:05) |
|
|
для: cheops
(19.08.2006 в 12:05)
| | Конечно подключено.
Возможно я не правильно подключил, но делал все по инструкции: mycrypt в sistem32, php_mcrypt в extensions. ПХП.ини подключение этой библиотеки раскоментировал.
Самое интересное что шифрование работает нормально, а вот расшифровка выкидывает ошибку сервера. | |
|
|
|
|
|
|
|
для: STEVER
(20.08.2006 в 13:05)
| | Хм... у денвера помоему свои расширения, вы использовали именно их или прикручивали раширение от оригинального PHP? | |
|
|
|
|
автор: STEVER (21.08.2006 в 10:57) |
|
|
для: cheops
(20.08.2006 в 18:05)
| | не совсем понял вопроса.
вот пхп.ини от денвера:
.....
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
extension=php_mcrypt.dll - вот расскоментировал
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
...... | |
|
|
|
|
|
|
|
для: STEVER
(21.08.2006 в 10:57)
| | А php_mcrypt.dll откуда брали? | |
|
|
|
|
автор: STEVER (21.08.2006 в 16:24) |
|
|
для: cheops
(21.08.2006 в 13:33)
| | Хороший вопрос, пол инета перерыл пока нашел. Точно сказать не могу.
Если дадите ссылочку на рабочую библиотеку, буду благодарен. | |
|
|
|
|
|
|
|
для: STEVER
(21.08.2006 в 16:24)
| | Боюсь что Denwer не будет работать с какой попало... нужно как минимум php_mcrypt.dll от той же версии PHP, которая в нём используется. У вас какая версия PHP? | |
|
|
|
|
автор: STEVER (22.08.2006 в 13:56) |
|
|
для: cheops
(22.08.2006 в 12:52)
| | 4.3.10 | |
|
|
|
|
автор: STEVER (23.08.2006 в 12:39) |
|
|
для: STEVER
(22.08.2006 в 13:56)
| | Все, я так понял больше мне никто ничего не скажет | |
|
|
|
|
|
|
|
для: STEVER
(23.08.2006 в 12:39)
| | Лучше скачать полный дистрибутив PHP 4.3.10 и взять библиотеку hp_mcrypt.dll от туда. | |
|
|
|
|
автор: STEVER (24.08.2006 в 14:34) |
|
|
для: cheops
(23.08.2006 в 13:08)
| | попробую | |
|
|
|
|
|
|
|
для: cheops
(26.07.2006 в 22:13)
| | а на сколько не рекомендуется использовать первый вариант? а то из 3 строчек стало 30 - как-то многовато:( | |
|
|
|
|
автор: STEVER (21.08.2006 в 21:28) |
|
|
для: P@Sol
(21.08.2006 в 16:32)
| | ну на сколько я понял для обеспечения криптостойкости алгоритма.
т.е. если ты шифруешь инфу, стоимость которой меньше 30 строчек, то первый вариант для тебя. | |
|
|
|