encrypt(3) Library Functions Manual encrypt(3) NOM encrypt, setkey, encrypt_r, setkey_r - Crypter des messages de 64 bits BIBLIOTHEQUE Bibliotheque hachage de mot de passe (libcrypt, -lcrypt) SYNOPSIS #define _XOPEN_SOURCE /* Consultez feature_test_macros(7) */ #include [[obsolete]] void encrypt(char block[64], int edflag); #define _XOPEN_SOURCE /* Consultez feature_test_macros(7) */ #include [[obsolete]] void setkey(const char *key); #define _GNU_SOURCE /* Consultez feature_test_macros(7) */ #include [[obsolete]] void setkey_r(const char *key, struct crypt_data *data); [[obsolete]] void encrypt_r(char *block, int edflag, struct crypt_data *data); DESCRIPTION Ces fonctions chiffrent et dechiffrent des messages de 64 bits. La fonction setkey() permet de fournir la clef a utiliser pour encrypt(). L'argument key est une table de 64 octets, chacun ayant la valeur 0 ou 1. Les octets key[n] ou n=8*i-1 sont ignores, ce qui ramene la clef a 56 bits effectifs. La fonction encrypt() modifie le tampon transmis, en l'encodant si l'argument edflag vaut 0, et en le decodant s'il vaut 1. L'argument block est, comme l'argument key, une representation de la valeur reelle a encoder sous forme de vecteur de bits. Le resultat est renvoye dans le meme vecteur. Ces deux fonctions ne sont pas reentrantes, c'est-a-dire que la clef est stockee dans une zone de stockage statique. Les fonctions setkey_r() et encrypt_r() sont des versions reentrantes. Elles utilisent la structure suivante pour contenir la clef : struct crypt_data { char keysched[16 * 8]; char sb0[32768]; char sb1[32768]; char sb2[32768]; char sb3[32768]; char crypt_3_buf[14]; char current_salt[2]; long current_saltbits; int direction; int initialized; }; Avant d'appeler setkey_r(), definissez data->initialized a zero. VALEUR RENVOYEE Ces routines ne renvoient pas de valeur. ERREURS Definissez errno a zero avant d'appeler les fonctions ci-dessus. Si elles reussissent, errno n'est pas modifiee. ENOSYS La fonction n'est pas disponible. (Par exemple, a cause des restrictions americaines sur l'exportation de routines cryptographiques.) ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +--------------------+--------------------------+----------------------+ |Interface | Attribut | Valeur | +--------------------+--------------------------+----------------------+ |encrypt(), setkey() | Securite des threads | MT-Unsafe race:crypt | +--------------------+--------------------------+----------------------+ |encrypt_r(), | Securite des threads | MT-Safe | |setkey_r() | | | +--------------------+--------------------------+----------------------+ STANDARDS encrypt() setkey() POSIX.1-2008. encrypt_r() setkey_r() Aucune. HISTORIQUE Supprimee dans la glibc 2.28. Parce qu'elles emploient le chiffrement par bloc DES, qui n'est plus considere comme sur, ces fonctions ont ete retirees de la glibc. Les applications devraient passer a une bibliotheque de chiffrement moderne telle que libgcrypt. encrypt() setkey() POSIX.1-2001, SUS, SVr4. Disponibilite dans la glibc Consultez crypt(3). Fonctionnalites dans la glibc Dans la glibc 2.2, ces fonctions utilisent l'algorithme DES. EXEMPLES #define _XOPEN_SOURCE #include #include #include #include int main(void) { char key[64]; char orig[9] = "eggplant"; char buf[64]; char txt[9]; for (size_t i = 0; i < 64; i++) { key[i] = rand() & 1; } for (size_t i = 0; i < 8; i++) { for (size_t j = 0; j < 8; j++) { buf[i * 8 + j] = orig[i] >> j & 1; } setkey(key); } printf("Avant chiffrement : %s\n", orig); encrypt(buf, 0); for (size_t i = 0; i < 8; i++) { for (size_t j = 0, txt[i] = '\0'; j < 8; j++) { txt[i] |= buf[i * 8 + j] << j; } txt[8] = '\0'; } printf("Apres chiffrement : %s\n", txt); encrypt(buf, 1); for (size_t i = 0; i < 8; i++) { for (size_t j = 0, txt[i] = '\0'; j < 8; j++) { txt[i] |= buf[i * 8 + j] << j; } txt[8] = '\0'; } printf("Apres dechiffrement : %s\n", txt); exit(EXIT_SUCCESS); } VOIR AUSSI cbc_crypt(3), crypt(3), ecb_crypt(3) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 encrypt(3)