Выполнение команды openssl с системной функцией c отличается от выполнения вывода команды openssl на терминале - PullRequest
0 голосов
/ 27 ноября 2018

Я использую MacOS / 10.13

Мой код на терминале:

echo -n this | openssl enc -aes-128-cbc -K 0 -iv 0 -base64

c код:

int main(){
   system("echo -n this | openssl enc -aes-128-cbc -K 0 -iv 0 -base64");
}

Запуск ScreenShot

enter image description here

enter image description here

1 Ответ

0 голосов
/ 29 ноября 2018

Команда echo имеет проблему, заключающуюся в том, что ее поведение не переносимо между различными оболочками или средами.Вместо этого лучше использовать printf, который является переносимым.В вашем случае замените оператор echo -n на printf, что приведет к следующему коду:

#include <stdlib.h>
int main() {
    system("printf this | openssl enc -aes-128-cbc -K 0 -iv 0 -base64");
}

Сборка и запуск:

$ gcc test.c -o test
$ ./test
gc8X3os/mFxDE73AebmweQ==

по желанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...