Использование mcrypt_encrypt () выдает мне предупреждение & quot; Размер ключа слишком длинный & quot;

Я пытаюсь использовать mcrypt_encrypt () в PHP, но у меня проблема, когда я использую функцию для шифрования:

Мой код:

Варс:

$key = "1e1r1r1t1y1y1g1g1g1g1g1345678910"; // That is a example, the real key have 32 long too.
$ref="12013515"; // example value

// Tamanio Encripyt ....
$iv_size = mcrypt_get_iv_size(MCRYPT_3DES,MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size,MCRYPT_RAND);
// Lunch
$stringEncrypted = mcrypt_encrypt(MCRYPT_3DES,$key,$ref,MCRYPT_MODE_CBC,$iv);

Если я сделаю это, PHP покажет мне ошибку:

Warning: mcrypt_encrypt(): Size of key is too large for this algorithm

Мне нужно использовать шифрованный 3DES … в чем может быть проблема?

0

Решение

Ключ размера 32 не поддерживается этим алгоритмом. Поддерживаются только ключи размером 24.

0

Другие решения

Ваш ключ к длинному. Максимальная длина ключа для 3DES в режиме CBC составляет 24 символа.

3DES имеет длину ключа 168 бит. 168 бит / 24 символа = 7 бит на символ.

Чтобы получить максимальную длину ключа для данного алгоритма, используйте:

mcrypt_get_key_size(MCRYPT_3DES,MCRYPT_MODE_CBC)

@увидеть http://php.net/manual/en/function.mcrypt-get-key-size.php

0

В этом случае мне нужно игнорировать значение размера для этого типа надписи (я не могу изменить ключ и тип надписи).

Я прочитал какой-то пост с той же проблемой и этим решением.

Спасибо всем за помощь.

0