Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mcrypt: Ошибка, Attempt to use an empty IV 
:(
    Опции темы
web_VIP
Дата 7.2.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Установил библиотеку php_mcrypt.dll, вот скрипт:
Код

$key = "123";
$input = "123123";
$encrypted_data = mcrypt_ecb (MCRYPT_3DES, $key, $input, MCRYPT_ENCRYPT);

Все равно не работает. выводит ошибку:
Код

Warning: mcrypt_ecb() [function.mcrypt-ecb]: Attempt to use an empty IV, which is NOT recommend in D:\Server\localhost\www\index.php on line 25

Не подскажите что сделать?

Это сообщение отредактировал(а) web_VIP - 7.2.2008, 14:33
PM MAIL   Вверх
skyboy
Дата 7.2.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(web_VIP @  7.2.2008,  13:19 Найти цитируемый пост)
 выводит ошибку:

не находишь, что это противоречит тексту сообщения PHP:
Цитата(web_VIP @  7.2.2008,  13:19 Найти цитируемый пост)
Warning: mcrypt_ecb() [function.mcrypt-ecb]: Attempt to use an empty IV, which is NOT recommend in D:\Server\localhost\www\index.php on line 25
?
PHP выдает тебе предупреждение(по всей видимости, переменная $key пуста, что делает бессмысленным применение шифрования - с пустым-то ключом), что может быть подавлено error_reporting(0);, но лучше, конечно, решить проблему.


PM MAIL   Вверх
web_VIP
Дата 7.2.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Ну а как тогда сделать что бы скрипт работал? вроде же все правильно сделал, кстате код из манулала по php
PM MAIL   Вверх
gta4kv
Дата 7.2.2008, 20:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



А если
Код


$key = substr(md5($_SERVER['REMOTE_ADDR']), 0, 6);



Добавлено через 8 минут и 6 секунд
Понял почему варнинг.

http://ru2.php.net/mcrypt_ecb

У функции есть еще пятый параметр, и использование функции без него - не рекомендовано. Но можно и без него. ;)
PM MAIL   Вверх
skyboy
Дата 8.2.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(gta4kv @  7.2.2008,  19:20 Найти цитируемый пост)
У функции есть еще пятый параметр

ведь правда. с "пустым параметром $key" я ошибался...

Добавлено через 34 секунды

 ! 
skyboy
Темы соединил. web_VIP, в будущем избегай создавать дубликаты тем.


PM MAIL   Вверх
web_VIP
Дата 8.2.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Пробую:
Код

<?php 
$key = substr(md5($_SERVER['REMOTE_ADDR']), 0, 6); 
$input = "123123";
$encrypted_data = mcrypt_ecb (MCRYPT_3DES, $key, $input, MCRYPT_ENCRYPT);
echo $encrypted_data;
?> 


Все равно ошибка:
Код

Warning: mcrypt_ecb() [function.mcrypt-ecb]: Attempt to use an empty IV, which is NOT recommend in D:\Server\localhost\www\index.php on line 6 
=qlфzTр 

PM MAIL   Вверх
FractalizeR
Дата 8.2.2008, 18:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Вы не указываете вектор инициализации. mcrypt библиотека этого делать не рекомендует. Для подавления варнинга пользуйтесь @. Или укажите вектор.

А вообще-то mcrypt_ecb устарел и больше не рекомендуется к использованию.

mcrypt_generic_init / mcrypt_generic используйте.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
web_VIP
Дата 9.2.2008, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



FractalizeR 

И с каких это пор эта функция "mcrypt_ecb" устарела? И что ты подразумеваешь под словом "устарела"?
PM MAIL   Вверх
skyboy
Дата 9.2.2008, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(web_VIP @  9.2.2008,  07:55 Найти цитируемый пост)
И с каких это пор эта функция "mcrypt_ecb" устарела?

смотрим в мануал(сложно было это сделать самому, да?)
Цитата(php.net)

This function is deprecated and should not be used anymore, see mcrypt_generic() and mdecrypt_generic() for replacements.

Т.е. разработчики PHP говорят, что функция не рекомендуется к использованию, и, для версий PHP где уже существуют mcrypt_generic и mdecrypt_generic, следует пользоваться ими. Почему? Обратись с вопросом к разработчикам, согу только предположить, что в более современном варианте не просто "уменьшилоськоличество параметров", а сама процедура (де)кодирования стала более модульной: отдельно инициализация(mcrypt_generic_init), отдельно - кодирование(mcrypt_generic), что обещает, как минимум, большую гибкость для модфикации разработчиками PHP, и, в принципе, большую  гибкость при написании кода программистом. 
Всяко, функция оставлена для обратной совместимости, и в версии PHP 6, скорее всего, будет исключена(раз в 5 версии - deprecated). Хочешь переписывать скрипты?
PM MAIL   Вверх
web_VIP
Дата 9.2.2008, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Оу :(... Там все по английски, я русские буквы еле как различаю, а ты мне еще и мануалы на англ.языке даешьsmile Ладно, на счет mcrypt_ecb - Устарела? - устарела так устарела, фиг с ней, забыли.
Перейдем теперь к mcrypt_generic() и mdecrypt_generic().
Может кто нибудь подскажет как спомощью них кодировать и декодирвоать информацию.
PM MAIL   Вверх
FractalizeR
Дата 9.2.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Код

//Открываем сеанс работы с библиотекой
$MCryptHandle = mcrypt_module_open('tripledes', '', 'cbc', '');

//Задаем ключ шифрования требуемой для алгоритма ширины и вектор инициализации
$KY = "ключ шифрования";
$KV = "вектор инициализации";
mcrypt_generic_init($MCryptHandle, $KY, $IV);

//Шифруем/расшифровываем
$EncryptedData = mcrypt_generic($MCryptHandle, "Secret data to encrypt")
$DecryptedData = mdecrypt_generic($MCryptHandle, $EncryptedData);


P.S. Если вы намерены делать карьеру программиста, рекомендую срочно пойти на курсы английского языка. Программист, не знающий английского в объеме, позволяющем хотя бы читать документацию со словарем, - нонсенс на мой взгляд

Это сообщение отредактировал(а) FractalizeR - 9.2.2008, 16:59


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
web_VIP
Дата 9.2.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



FractalizeR, 
А ты сам проверяешь код перед тем как его дать другим на расмотрение? Твои код:
Код

//Открываем сеанс работы с библиотекой
$MCryptHandle = mcrypt_module_open('tripledes', '', 'cbc', '');

//Задаем ключ шифрования требуемой для алгоритма ширины и вектор инициализации
$KY = "ключ шифрования";
$KV = "вектор инициализации";
mcrypt_generic_init($MCryptHandle, $KY, $IV);

//Шифруем/расшифровываем
$EncryptedData = mcrypt_generic($MCryptHandle, "Secret data to encrypt");
$DecryptedData = mdecrypt_generic($MCryptHandle, $EncryptedData);

echo $EncryptedData; //зашифровываем запись 
echo "<br>";
echo $DecryptedData; //Шифровываем запись


Итог:
Код

ен%ZПз1lёЕ IҐќi-ыўV5цe

:/э¤@AЦata to encrypt 


PM MAIL   Вверх
gta4kv
Дата 9.2.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



web_VIP,  а может надо самому немного головой подумать? Не должни же все за тебя делать. Извините конечно за резкость...


Может быть стоит:
Код

$KY = "ключ шифрования";
$KV = "вектор инициализации";

поменять на свое?

Это сообщение отредактировал(а) gta4kv - 9.2.2008, 19:00
PM MAIL   Вверх
web_VIP
Дата 9.2.2008, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Ладно, gta4kv ты все таки прав, но можно два вопроса?!?! 
1. Что значит ключ шифрования? 
2. Что значит вектор инициализации?

PM MAIL   Вверх
gta4kv
Дата 9.2.2008, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата(web_VIP @ 9.2.2008,  18:19)
Ладно, gta4kv ты все таки прав, но можно два вопроса?!?! 
1. Что значит ключ шифрования? 
2. Что значит вектор инициализации?

1. -

2.
Цитата

Вектор инициализации - случайное число, которое регулярно обновляется, передается по каналу управления и используется для инициализации алгоритма шифро


Попробуйте и туда и туда Random'ные цифры. ( rand(); )

Это сообщение отредактировал(а) gta4kv - 9.2.2008, 19:07
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0597 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.