Расшифровка DES / ECB / PKCS5Padding в PHP
Я нуждаюсь в расшифровке с помощью PHP (или Javascript) некоторых вызовов служб. Я потратил весь день, пытаясь добиться этого, но я не смог расшифровать его должным образом.
В качестве ссылки поставщик услуг отправил мне следующий пример кода расшифровки в Java:
<code>DESKeySpec dks = new DESKeySpec("keyword".getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey key = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); SecureRandom sr = new SecureRandom(); cipher.init( Cipher.DECRYPT_MODE, key ,sr); byte b[] = response.toByteArray(); byte decryptedData[] = cipher.doFinal( b ); </code>
Я думаю, что я на правильном пути, используя:
<code>$td = mcrypt_module_open(MCRYPT_DES, '', 'ecb', ''); $iv_size = mcrypt_enc_get_iv_size($td); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $key = substr($keyword, 0, mcrypt_enc_get_key_size($td)); mcrypt_generic_init($td, $key, $iv); $decrypted = mdecrypt_generic($td, $data); $decrypted = pkcs5_unpad($decrypted); </code>
Но, честно говоря, я уверен, что все испортил с помощью $ iv creationg и $ ключевого слова setup (или, может быть, с $ data или $ расшифрованными типами?). Функция pkcs5_unpad выглядит следующим образом:
<code>function pkcs5_unpad($text) { $pad = ord($text{strlen($text)-1}); if ($pad > strlen($text)) return false; return substr($text, 0, -1 * $pad); } </code>
Я не только фанат php, но и техник криптографии ... не могли бы вы помочь мне решить эту проблему?