2014-02-12 2 views
0

-lcrypt를 연결하면 문제는 내 명령 줄 인수와 상관없이 동일한 암호화를 얻게된다는 것입니다. 내가 소금을 바꿀 때만 암호화가 바뀌는 것 같습니다. 내 코드에서이 결함으로 이어질 수있는 점은 무엇입니까? crypt(*enc, salt)에서왜 암호화 기능이 여기에서 작동하지 않습니까?

#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)); 

} 

답변

1

, 당신은 프로그램이 아닌 첫 번째 실제 인수의 이름 당신의 인수를 암호화하고 있습니다. 대신 crypt(enc[1], salt)을 시도하십시오.

1

거의 다 알았습니다. 명령 행 인수 처리 만 틀렸다.

프로그램이 PRG라고하며이 같이 호출하는 경우 : enc[1]보다

prg teststring 

는 "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)); // <<---- 

} 

일반적으로 명령 행 인수는는 argc와 argv를 호출됩니다

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

해당 줄을 다음과 같이 만듭니다.

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

enc [1]의 첫 번째 인수를 변경 했는데도 여전히 이해가되지 않습니다. printf ("% s \ n", crypt ("drain", salt)); 첫 번째 인수에 관계없이 동일한 암호화를 얻으며 소금 만 변경하면 암호화가 변경됩니다. 왜 그런가요? – user3303819

+1

@ user3303819 - 귀하의 의견을 이해할 수 없습니다. –