Я пытаюсь выполнить в Java эту команду, и мне нужно получить вывод в строке Java.Команда шифрует обычный текст парольной фразой и возвращает зашифрованный простой текст.
Команда:
/ bin / sh -c echo "textToEncrypt" |/ usr / bin / openssl enc -aes-256-cbc -e -base64 -A -pass pass: passwordPhrase
Снимок экрана:
![enter image description here](https://i.stack.imgur.com/hQMqa.png)
Я делаю следующее:
Я могу запустить команду в оболочке Linux, и я получаю зашифрованную строку вывода в оболочке,например: «U2FsdGVkX1 / 1UcPzhX7IGgvXdx9YrS + cizrla8UYhU8 =», поэтому команда работает.
Я могу запустить ту же команду в Java 1.7, как в примере кода ниже (метод cryptData).Он работает нормально, но я не получаю вывод (зашифрованные данные).
Я могу запустить любую команду без "echo" из Java, например, ("ls -fla | more«).Запустите нормально снова, и я всегда получаю вывод.
Это код:
public void cryptData() {
String passwordPhrase="a1b2c3d4e5";
ProcessBuilder processBuilder = new ProcessBuilder();
List<String> commands = new ArrayList<String>();
commands.add("/bin/sh");
commands.add("-c");
commands.add("echo");
commands.add("/"textToCrypt/"");
commands.add("|");
commands.add("/usr/bin/openssl");
commands.add("-aes-256-cbc");
commands.add("-e");
commands.add("-base64");
commands.add("-A");
commands.add("-pass");
commands.add("pass:"+passwordPhrase);
// Run the shell command
processBuilder.command(commands);
try { //standard stringBuilder process
Process process = processBuilder.start();
StringBuilder output = new StringBuilder();
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
int exitVal = process.waitFor();
if (exitVal == 0) {
System.out.println("Success!");
System.out.println("Output1"+ output);
System.out.println("Output2"+ output.toString());
System.exit(0);
} else {
System.out.println("Error");
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Конечный результат всегда: «Удачи!»но вывод пуст или нулевой с этим кодом.Что я делаю не так?