为什么crypt功能在这里不起作用?

时间:2014-02-12 22:34:38

标签: c linux crypt

我链接了-lcrypt,问题是我得到了相同的加密,无论我的命令行参数。加密似乎只有在我更改盐时才会改变。我的代码中会出现什么问题?

#define _XOPEN_SOURCE       
#include <unistd.h>
#include <math.h>
#include <stdio.h>
#include <string.h>


int main(int argc, char *enc[])
{
if (argc != 2)
{  
    printf("Improper command-line arguments\n");
    return 1;
}
char *salt = "ZA";

printf("%s \n", crypt(*enc, salt));

}

2 个答案:

答案 0 :(得分:1)

crypt(*enc, salt)中,您正在加密第一个参数,该参数是程序的名称,而不是第一个实际参数。请改为crypt(enc[1], salt)

答案 1 :(得分:1)

你几乎得到了它。只有命令行参数处理错误。

如果您的程序名为prg,并且您将其称为:

prg teststring

enc[1]是“teststring”

#define _XOPEN_SOURCE       
#include <unistd.h>
#include <math.h>
#include <stdio.h>
#include <string.h>


int main(int argc, char *enc[])
{
    if (argc != 2)
    {  
            printf("Improper command-line arguments\n");
                return 1;
    }
    char *salt = "ZA";

    printf("%s \n", crypt(enc[1], salt)); // <<----

}

命令行args通常称为argc和argv:

int main(int argc, char *argv[])

这将使相关的行像这样:

printf("%s \n", crypt(argv[1], salt));