fonction de cryptage et erreur de liaison «référence non définie à ‘crypt’

J’ai utilisé la fonction crypt dans c pour chiffrer la chaîne donnée. J’ai écrit le code suivant,

#include #include int main() { printf("%s\n",crypt("passwd",1000)); } 

Mais le code ci-dessus a généré une erreur, “référence indéfinie à” crypt “”. Quel est le problème dans le code ci-dessus.

Merci d’avance.

Si vous souhaitez utiliser la fonction crypt() , vous devez vous connecter à la bibliothèque crypt. Ajoutez -lcrypt à votre commande de compilation. Vous devrez peut-être également définir _XOPEN_SOURCE ou _GNU_SOURCE .

 $ man 3 crypt CRYPT(3) Linux Programmer's Manual CRYPT(3) NAME crypt, crypt_r - password and data encryption SYNOPSIS #define _XOPEN_SOURCE /* See feature_test_macros(7) */ #include  char *crypt(const char *key, const char *salt); #define _GNU_SOURCE /* See feature_test_macros(7) */ #include  char *crypt_r(const char *key, const char *salt, struct crypt_data *data); Link with -lcrypt. ... 

crypt() utilise DES qui est extrêmement peu sécurisé et probablement plus âgé que vous de 12 ans.

Je vous suggère d’utiliser un algorithme de cryptage sérieux, tel que AES. De nombreuses bibliothèques offrent un tel cryptage; OpenSSL (crypto.lib) est un bon choix par exemple.

Ne pas répondre à votre question car beaucoup de gens l’ont déjà fait

Vous devez inclure crypt.h si vous souhaitez utiliser crypt() . Au-dessous de vos deux autres, ajoutez:

 #include  

Vous devez mettre la ligne suivante avant vos includes:

 #define _XOPEN_SOURCE 

Vous devez #define __XOPEN_SOURCE avant de #define __XOPEN_SOURCE les fichiers d’en-tête.

La fonction crypt est non standard, mais est fournie en tant qu’extension par la bibliothèque GNU C sur Linux. C’est défini dans