Я пытаюсь использовать 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 … в чем может быть проблема?
Ключ размера 32 не поддерживается этим алгоритмом. Поддерживаются только ключи размером 24.
Ваш ключ к длинному. Максимальная длина ключа для 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
В этом случае мне нужно игнорировать значение размера для этого типа надписи (я не могу изменить ключ и тип надписи).
Я прочитал какой-то пост с той же проблемой и этим решением.
Спасибо всем за помощь.