从PHP执行Java程序

时间:2014-05-01 13:12:20

标签: java php exec

我有一个用Java编写的程序,它读取一个键并编码一些文件。我有一个PHP代码,它应该运行这个Java程序:

$s = "java -jar library/encrypt/Encrypt.jar encrypt filePath CTR";

$descriptorspec = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("pipe", "w"),
);
$process = proc_open($s, $descriptorspec, $pipes, dirname(__FILE__));

不幸的是,Java程序抛出异常:

Exception in thread "main" java.security.InvalidKeyException: Illegal key size

方法:

private byte[] encrypt(byte[] plainText) throws Exception {
    byte[] ivBytes = new byte[16];
    new Random().nextBytes(ivBytes);

    IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
    Cipher cipher = Cipher.getInstance("AES/" + encryptionMode + "/PKCS5Padding", "BC");
    SecretKeySpec keyy = new SecretKeySpec(key, "AES");

    // in next line Java throws exception
    cipher.init(Cipher.ENCRYPT_MODE, keyy, ivSpec);

    byte[] cryptograph = cipher.doFinal(plainText);
    return ArrayUtils.addAll(ivBytes, cryptograph);
}

但是,当我从命令行运行它时,Java程序正常工作。我使用完全相同的参数运行它 - 并正确编程编码文件。

为什么我的程序在从命令行执行时正常工作,并在从PHP执行时抛出异常?有什么想法吗?

我在Windows上的XAMPP上运行PHP。

0 个答案:

没有答案