Шифрование в Java и дешифрование в PHP с помощью Phpseclib

Изменить 2: проблема решена. Я не понял, как должна работать функция loadkey в php, и я ошибочно предположил, что он будет читать файл ключа (это не так). Решение состояло в том, чтобы прочитать содержимое файла в переменной, а затем загрузить переменную с помощью loadkey.

Изменить: проблема связана с ключом. Я понял, что loadkey возвращает false, указывая, что он не смог прочитать ключ. Может ли быть разница в форматах, принятых phpseclib и ключах, созданных в java?


Я пытаюсь зашифровать ключ AES в Java (android) и расшифровать его в PHP, чтобы использовать симметричное шифрование для передачи данных. В настоящее время я могу зашифровать и расшифровать короткий файл или строку с помощью RSA в Java, но не смог расшифровать ее на PHP.

Я использую phpseclib для дешифрования в PHP, и я не получаю никаких ошибок, но моя строка вывода равна null.

Это код, который я использую:

Ява:

File archivo_llave_publica = new File(direccion); byte[] bytes_llave = leer(archivo_llave_publica); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(bytes_llave); PublicKey pubKey = keyFactory.generatePublic(publicKeySpec); Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.ENCRYPT_MODE, pubKey); byte[] cipherData = cipher.doFinal(src); return cipherData; 

PHP:

 <?php include('./Crypt/RSA.php'); $rsa = new Crypt_RSA(); $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); $rsa->loadKey('./key/Pri.txt'); // public key $temprsa = $rsa->decrypt($key); if ($temprsa==null){echo "null decrypt";} в <?php include('./Crypt/RSA.php'); $rsa = new Crypt_RSA(); $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); $rsa->loadKey('./key/Pri.txt'); // public key $temprsa = $rsa->decrypt($key); if ($temprsa==null){echo "null decrypt";} 

Код, используемый для генерации ключей:

 public void generaArchivoLlaves(String pub_file, String pri_file){ File LlavePrivada = new File(raiz.getAbsolutePath()+"/Bushfire/"+pri_file); File LlavePublica = new File(raiz.getAbsolutePath()+"/Bushfire/"+pub_file); try { KeyPair kp = generaLlaves(); byte[] privateKeyBytes = kp.getPrivate().getEncoded(); byte[] publicKeyBytes = kp.getPublic().getEncoded(); Toast.makeText(this, "Privada: "+kp.getPrivate().getFormat(), Toast.LENGTH_LONG).show(); Toast.makeText(this, "Pública: "+kp.getPublic().getFormat(), Toast.LENGTH_LONG).show(); escribir(LlavePrivada, privateKeyBytes); escribir(LlavePublica, publicKeyBytes); } catch (NoSuchAlgorithmException e) {Toast.makeText(this, "Error al generar llave", Toast.LENGTH_LONG).show();} } public KeyPair generaLlaves() throws NoSuchAlgorithmException{ KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(2048); KeyPair kp = kpg.genKeyPair(); //Toast.makeText(this, "Se generó correctamente", Toast.LENGTH_LONG).show(); return kp; 

}

ПРИМЕЧАНИЕ . Функция escribir просто записывает байт данных по байту в файл.

Что может быть причиной проблемы?