На основании примера crypt.c У меня есть следующий код, но когда я его запускаю, пароль1 повреждается во время второго вызова в крипте. Может ли кто-нибудь обнаружить проблему?Потеря данных в функции склепа в C
Ввод одного и того же пароля для обоих запросов приведет к тому же значению для всех трех строк в конце.
================================================================================================================================================== ==
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <crypt.h>
#define _XOPEN_SOURCE
#include <unistd.h>
/*
cc calc1.c -ocalc1 -lcrypt
*/
int main(void) {
unsigned long seed[2];
char salt[] = "$1$zhodFRlE$";
char *password2,*password1,*temp1;
int i,ok;
printf("%s is Salt\n",salt);
password1 = crypt(getpass("Password1 :"), salt);
printf("Crypt Password1: %s\n",password1);
temp1 = strdup(password1);
printf("Crypt temp1: %s\n",temp1);
password2 = crypt(getpass("Password2 :"),temp1);
printf("Crypt Password1: %s\n",password1);
printf("Crypt temp1: %s\n",temp1);
printf("Crypt Password2: %s\n",password2);
return 0;
}
========================================= ========================
Что такое 'crypt()' определение, когда оно возвращает NULL **? ** –
@GrijeshChauhan - [crypt() man page] (http://linux.die.net/man/3/crypt) – Mike
Ahaa .. Стандартная функция Спасибо @Mike! –