使用c系统功能执行openssl命令与在终端上执行openssl命令输出不同

时间:2018-11-27 11:24:02

标签: c openssl

我正在使用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 :(得分:1)

echo命令有一个问题,即其行为无法在不同的Shell或环境之间移植。最好改用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==

根据需要。