【发布时间】:2019-05-21 04:23:42
【问题描述】:
我想生成一个已经经过 md5 散列的字符串的 md5 散列。这就是我所做的!我已经循环了它,但不幸的是,它显示了一些错误“sh:2:语法错误:“|”意外”。 我希望它与循环内的“strcat”有关。 不知何故在循环内的行
strcpy(command,"echo ");
strcat(command,str);
被忽略。我迷路了!
谁能帮帮我?
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
FILE *fp;
char str[100], command[100];
char var[100];
int i;
printf("Enter the string:\n");
scanf("%[^\n]s",str);
printf("\nString is: %s\n\n",str);
for (i=0; i<3; i++) {
strcpy(command,"echo ");
strcat(command,str);
strcat(command," | md5sum");
strcat(command," | cut -c1-32");
fp = popen(command, "r");
fgets(var, sizeof(var), fp);
pclose(fp);
strcpy(str,var);
}
printf("The md5 has is :\n");
printf("%s\n", var);
return 0;
}
【问题讨论】:
-
Io 重定向是 shell 所做的;不是您通过
popen做的事情。如果您真的想从一个进程重定向到另一个进程,这是可能的,但比复制/粘贴您在 shell 提示符下键入的内容(看起来就是您正在尝试的内容)要复杂得多。我敢问,你为什么不使用像 OpenSSL 这样的加密库?使用该工具包制作 anything 的 MD5 哈希值几乎是微不足道的。 -
感谢 WhozCraig 的此输入。我会尝试这种替代方法。