On Oct 18, 2012, at 4:39 PM, Adam Richardson <simples...@gmail.com> wrote:

> On Thu, Oct 18, 2012 at 12:06 PM, Rick Dwyer <rpdw...@earthlink.net> wrote:
>> Hello all.
>> 
>> Has anyone ever tried to decode a JAVA AES/CBC encrypted string with PHP 
>> before?
>> 
>> I found a tutorial online with the following code to use as starting point, 
>> but it fails to return anything readable:
>> 
>> $code ='Hello World';
>> $key = 'my key';
>> 
>> function decrypt($code, $key) {
>> $key = hex2bin($key);
>> $code = hex2bin($code);
>> $td = mcrypt_module_open("rijndael-128", "", "cbc", "");
>> mcrypt_generic_init($td, $key, "fedcba9876543210");
>> $decrypted = mdecrypt_generic($td, $code);
>> mcrypt_generic_deinit($td);
>> mcrypt_module_close($td);
>> return utf8_encode(trim($decrypted));
>> }
>> 
>> 
>> function hex2bin($hexdata) {
>> $bindata = "";
>> for ($i = 0; $i < strlen($hexdata); $i += 2) {
>> $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
>> }
>> return $bindata;
>> }
>> echo decrypt($code, $key);
>> 
>> The above returns output containing a series of unprintable characters.
>> 
>> I thought maybe it was due to $code not being in a hex format, but after 
>> converting to hex and resubmitting, I still unprintable characters.
>> 
>> Any info is appreciated.
> 
> Can you post the Java code you're using? There are things such as the
> padding specification that could cause some issues.
> 
> Adam
> 

Hi all.  We were able to get it to work.  But thank you for your replies.

But for anyone interested (including anyone who has emailed me privately 
implying I was up to something untoward), the specs from the client were as 
follows:

Unencrypted: "2012-10-18T10:57:43+0200 someurl.com"
Encrypted + base64: "ch7WvaSrCiHLstNeNUp5SkPfPGqZ8vrNPJT+9vU7jN/C"
Encrypt algorithm: AES/CBC, PKCS5Padding, IV of 16 NULL (0x0 hex) bytes
Key: "someKEY123-12346"
--------------------------------------------------------------------------------------------------------------------


$iv = mcrypt_create_iv(32);
$key = 'someKEY123-12346';
$text = '2012-10-18T10:57:43+0200 someurl.com';
$size = mcrypt_get_block_size('rijndael-128', 'cbc');
$text = pkcs5_pad($text, $size); 
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, 
$iv);

$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, 
base64_decode('ch7WvaSrCiHLstNeNUp5SkPfPGqZ8vrNPJT+9vU7jN/C'), MCRYPT_MODE_CBC, 
$iv);


function pkcs5_pad ($text, $blocksize)
{
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}


echo $decrypttext;
… 




--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to