我有一个用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。