Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> mcrypt_encrypt(): The IV parameter must be as long
z668  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 26982
На форуме: 5 лет, 8 месяцев, 17 дней
Карма:




PHP выдает ошибку: `mcrypt_encrypt(): The IV parameter must be as long as the blocksize`

Что ему не нравится в векторе?

    // Ключ
$AES_Key = "93908027539382757893442837120983";

// Вектор
$AES_IV = "33985771209830270358974938292834";

// Методы
function encrypt($string)
{
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $AES_Key, addpadding($string), MCRYPT_MODE_CBC, $AES_IV));
}

function addpadding($string, $blocksize = 32)
{
$len = strlen($string);
$pad = $blocksize - ($len % $blocksize);
$string .= str_repeat(chr($pad), $pad);
return $string;
}



Аналогичный код на шарпе работает отлично:

 // Ключ
private const string AES_Key = "93908027539382757893442837120983";

// Вектор
private const string AES_IV = "33985771209830270358974938292834";

// Зашифровывает строку в AES CBC 256 PKCS7
internal static string AES_Encrypt(string inputStr)
{
byte[] xBuff = null;

using (var aes = new RijndaelManaged())
{
// Настройки
aes.KeySize = 256;
aes.BlockSize = 256;
aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.CBC;
aes.Key = Encoding.UTF8.GetBytes(AES_Key);
aes.IV = Encoding.UTF8.GetBytes(AES_IV);

using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, aes.CreateEncryptor(aes.Key, aes.IV), CryptoStreamMode.Write))
{
byte[] textArr = Encoding.UTF8.GetBytes(inputStr);
cs.Write(textArr, 0, textArr.Length);
}

xBuff = ms.ToArray();
}
}


return Convert.ToBase64String(xBuff);
}


Это сообщение отредактировал z668 - 26.11.2015 - 01:19
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25994
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 26 дней
Карма: 725

Не курю:
1 год, 2 месяца, 12 дней


область видимости переменный ключа и вектора вне области видимости тела функции encrypt()

либо объяви их константами, либо передай их аргументами в тело функции


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
z668  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 11
Пользователь №: 26982
На форуме: 5 лет, 8 месяцев, 17 дней
Карма:




Линк на рабочую реализацию: http://ru.stackoverflow.com/questions/4696...-the-blocksize/

p.s. объяснение в комментариях.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса