encrypt
Table des matières
Retour à l'index
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).
| Interface | Attribut | Valeur
|
|
encrypt(),
setkey()
| Sécurité des threads | MT-Unsafe race:crypt
|
|
encrypt_r(),
setkey_r()
| Sécurité des threads | MT-Safe
|
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("Before encrypting: %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("After encrypting: %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("After decrypting: %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 à
Index
- 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
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:11 GMT, September 19, 2025