Bug #67286 [Opn]: Warning: mcrypt_encrypt(): Only keys of size 24 supported
| From: | levim@php.net | Date: | Thu, 15 May 2014 16:37:05 +0000 |
| Subject: | Bug #67286 [Opn]: Warning: mcrypt_encrypt(): Only keys of size 24 supported | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-185831@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=67286&edit=1
ID: 67286
Updated by: levim@php.net
Reported by: mengxiangbaidu at qq dot com
Summary: Warning: mcrypt_encrypt(): Only keys of size 24
supported
Status: Open
Type: Bug
Package: mcrypt related
Operating System: windows
PHP Version: 5.6.0beta2
Block user comment: N
Private report: N
New Comment:
Bug 67287 is a duplicate of this one.
Previous Comments:
------------------------------------------------------------------------
[2014-05-15 14:49:27] 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=67286&edit=1