Man page - setkey_r(3)

Packages contains this manual

Available languages:

en fr pl tr ja ro

Manual

encrypt

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
STANDARDS
HISTORIQUE
Disponibilité dans la glibc
Fonctionnalités dans la glibc
EXEMPLES
VOIR AUSSI
TRADUCTION

NOM

encrypt, setkey, encrypt_r, setkey_r - Crypter des messages de 64 bits

BIBLIOTHÈQUE

BibliothĂšque hachage de mot de passe ( libcrypt , -lcrypt )

SYNOPSIS

#define _XOPEN_SOURCE /* Consultez feature_test_macros(7) */
#include <unistd.h>

[[obsolĂšte]] void encrypt(char block [64], int edflag );

#define _XOPEN_SOURCE /* Consultez feature_test_macros(7) */
#include <stdlib.h>

[[obsolĂšte]] void setkey(const char * key );

#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#include <crypt.h>

[[obsolĂšte]] void setkey_r(const char * key , struct crypt_data * data );
[[obsolĂšte]] void encrypt_r(char *
block , int edflag ,
struct crypt_data *
data );

DESCRIPTION

Ces fonctions chiffrent et dĂ©chiffrent des messages de 64 bits. La fonction setkey () permet de fournir la clef Ă  utiliser pour encrypt (). L’argument key est une table de 64 octets, chacun ayant la valeur 0 ou  1. Les octets key[n] oĂč n=8*i-1 sont ignorĂ©s, ce qui ramĂšne la clef Ă  56 bits effectifs.

La fonction encrypt () modifie le tampon transmis, en l’encodant si l’argument edflag vaut 0, et en le dĂ©codant s’il vaut 1. L’argument block est, comme l’argument key , une reprĂ©sentation de la valeur rĂ©elle Ă  encoder sous forme de vecteur de bits. Le rĂ©sultat est renvoyĂ© dans le mĂȘme vecteur.

Ces deux fonctions ne sont pas rĂ©entrantes, c’est-Ă -dire que la clef est stockĂ©e dans une zone de stockage statique. Les fonctions setkey_r () et encrypt_r () sont des versions rĂ©entrantes. 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 (), dĂ©finissez data->initialized Ă  zĂ©ro.

VALEUR RENVOYÉE

Ces routines ne renvoient pas de valeur.

ERREURS

DĂ©finissez errno Ă  zĂ©ro avant d’appeler les fonctions ci-dessus. Si elles rĂ©ussissent, errno n’est pas modifiĂ©e.

ENOSYS

La fonction n’est pas disponible. (Par exemple, Ă  cause des restrictions amĂ©ricaines sur l’exportation de routines cryptographiques.)

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3885768-1.png

STANDARDS

encrypt ()
setkey
()

POSIX.1-2008.

encrypt_r ()
setkey_r
()

Aucune.

HISTORIQUE

Supprimée dans la glibc 2.28.

Parce qu’elles emploient le chiffrement par bloc DES, qui n’est plus considĂ©rĂ© comme sĂ»r, ces fonctions ont Ă©tĂ© retirĂ©es de la glibc. Les applications devraient passer Ă  une bibliothĂšque de chiffrement moderne telle que libgcrypt .
encrypt
()
setkey
()

POSIX.1-2001, SUS, SVr4.

Disponibilité dans la glibc

Consultez crypt (3).

Fonctionnalités dans la glibc

Dans la glibc 2.2, ces fonctions utilisent l’algorithme DES.

EXEMPLES

#define _XOPEN_SOURCE
#include <crypt.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
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("AprĂšs 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("AprÚs déchiffrement : %s\n", txt);
exit(EXIT_SUCCESS);
}

VOIR AUSSI

cbc_crypt (3), crypt (3), ecb_crypt (3)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .