note 47189 deleted from ref.mcrypt by danbrown

From: Date: Mon, 13 Dec 2010 16:26:58 +0000
Subject: note 47189 deleted from ref.mcrypt by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-174868@lists.php.net to get a copy of this message
Note Submitter: emaher at newbay dot com ---- Just a note about mcrypt<-->java interop (have a php app encrypting a string and a java app decrypting it) php mcrypt pads the plaintext with spaces until the plaintext is a multiple of the block size (e.g 16 for most symmetric ciphers). These spaces have to be stripped on when decrypting on the java side. Seems to be no other way of using a sensible padding (e.g. with PKCS #5) on the mcrypt side. The following php and java will interop $cipher = "rijndael-128"; $mode = "cbc"; echo "CIPHER: $cipher | MODE: $mode\n"; // data,key, iv $data = "blah"; $key = "01234567890abcdef"; $iv = "fedcba9876543210"; // set up and encyrpt $td = mcrypt_module_open($cipher, "", $mode, $iv); mcrypt_generic_init($td, $key, $iv); $encrypted_data = mcrypt_generic($td, $data); echo bin2hex($encrypted_data); // tear down mcrypt_generic_deinit($td); mcrypt_module_close($td); Java side Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); SecretKeySpec keySpec = new SecretKeySpec("01234567890abcdef".getBytes(), "AES"); IvParameterSpec ivSpec = new IvParameterSpec("fedcba9876543210".getBytes()); cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec); byte[] outText = cipher.doFinal(fromHexString(input)); System.out.println(new String(outText).trim());

« previous php.notes (#174868) next »