Bug #67287 [Opn->Dup]: Warning: mcrypt_encrypt(): Only keys of size 24 supported
Edit report at https://bugs.php.net/bug.php?id=67287&edit=1
ID: 67287
Updated by: levim@php.net
Reported by: mengxiangbaidu at qq dot com
Summary: Warning: mcrypt_encrypt(): Only keys of size 24
supported
-Status: Open
+Status: Duplicate
Type: Bug
Package: mcrypt related
Operating System: windows
PHP Version: 5.6.0beta2
Block user comment: N
Private report: N
New Comment:
Seems to have double-posted.
Previous Comments:
------------------------------------------------------------------------
[2014-05-15 16:37:04] levim@php.net
Related To: Bug #67286
------------------------------------------------------------------------
[2014-05-15 14:50:42] mengxiangbaidu at qq dot com
Description:
------------
php version <= 5.5.12
string(6) "zxcvbn"
Warning: mcrypt_encrypt(): Key of size 32 not supported by this algorithm. in /test.php on line 9
Warning: mcrypt_decrypt(): Key of size 32 not supported by this algorithm. in /test.php on line 17
string(0) "zxcvbn"
php version >= 5.6
string(6) "zxcvbn"
Warning: mcrypt_encrypt(): Key of size 32 not supported by this algorithm. Only keys of size 24
supported in /test.php on line 9
Warning: mcrypt_decrypt(): Key of size 32 not supported by this algorithm. Only keys of size 24
supported in /test.php on line 17
string(0) ""
================
I know this warning is good thing ã If you are upgrading php 5.5 to 5.6 , the php program
does not work ãThis maybe a serious problemã
Test script:
---------------
<?php
function encrypt($data, $key) {
$block = mcrypt_get_block_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_ECB);
$pad = $block - (strlen($data) % $block);
$data .= str_repeat(chr($pad), $pad);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_ECB), MCRYPT_RAND);
$encrypted = mcrypt_encrypt(MCRYPT_TRIPLEDES, $key, $data, MCRYPT_MODE_ECB, $iv);
return $encrypted;
}
function decrypt($data, $key) {
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_ECB), MCRYPT_RAND);
$data = mcrypt_decrypt(MCRYPT_TRIPLEDES, $key, $data, MCRYPT_MODE_ECB, $iv);
$block = mcrypt_get_block_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_ECB);
$pad = ord($data[($len = strlen($data)) - 1]);
$decrypted = substr($data, 0, strlen($data) - $pad);
return rtrim($decrypted);
}
$key = md5('asdfgh');
$original_data = 'zxcvbn';
var_dump($original_data);
$data = encrypt($original_data, $key);
$data = base64_encode($data);
$data = base64_decode($data);
$data = decrypt($data, $key);
var_dump($data);
Expected result:
----------------
string(6) "zxcvbn"
Warning: mcrypt_encrypt(): Key of size 32 not supported by this algorithm. Only keys of size 24
supported in /test.php on line 9
Warning: mcrypt_decrypt(): Key of size 32 not supported by this algorithm. Only keys of size 24
supported in /test.php on line 17
string(0) "zxcvbn"
Actual result:
--------------
string(6) "zxcvbn"
Warning: mcrypt_encrypt(): Key of size 32 not supported by this algorithm. Only keys of size 24
supported in /test.php on line 9
Warning: mcrypt_decrypt(): Key of size 32 not supported by this algorithm. Only keys of size 24
supported in /test.php on line 17
string(0) ""
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=67287&edit=1
Thread (2 messages)