blowfish(3) BF_ecb_encrypt,

SYNOPSIS


#include <openssl/blowfish.h>
void BF_set_key(BF_KEY *key, int len, const unsigned char *data);
void BF_ecb_encrypt(const unsigned char *in, unsigned char *out,
BF_KEY *key, int enc);
void BF_cbc_encrypt(const unsigned char *in, unsigned char *out,
long length, BF_KEY *schedule, unsigned char *ivec, int enc);
void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out,
long length, BF_KEY *schedule, unsigned char *ivec, int *num,
int enc);
void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out,
long length, BF_KEY *schedule, unsigned char *ivec, int *num);
const char *BF_options(void);
void BF_encrypt(BF_LONG *data,const BF_KEY *key);
void BF_decrypt(BF_LONG *data,const BF_KEY *key);

DESCRIPTION

Cette bibliothèque implémente l'algorithme de chiffrement Blowfish, qui a été créé et décrit par Counterpane (voir http://www.counterpane.com/blowfish.html).

Blowfish est un algorithme de chiffrement par blocs qui opère sur des blocs de données de 64 bits (8 octets). Blowfish utilise une clé de taille variable, mais en général, les clés de longueur 128 bits (16 octets) sont considérées comme bonnes pour un chiffrement puissant. Blowfish peut être utilisé de la même façon que l'algorithme DES (voir des_modes(7)). Blowfish est actuellement un des algorithmes de chiffrement par blocs les plus rapides. Il est un peu plus rapide que DES, et bien plus rapide qu'IDEA ou RC2.

Blowfish consiste en une phase de mise en place de clés, puis une phase deréel chiffrement ou déchiffrement.

BF_set_key() mets en place BF_KEY key en utilisant la clé de len octets dans data.

BF_ecb_encrypt() est la fonction de chiffrement et de déchiffrement de base de Blowfish. Celle-ci chiffre et déchiffre les premiers 64 bits de in en utilisant la clé key, et met le résultat dans out. enc décide si un chiffrement (BF_ENCRYPT) ou un déchiffrement (BF_DECRYPT) doit être appliqué. Le vecteur pointé par in et out doit avoir une longueur de 64 bits, pas moins. S'ils sont plus grands, tout ce qu'il y a après le 64ème bit est ignoré.

Les fonctions de mode BF_cbc_encrypt(), BF_cfb64_encrypt() et BF_ofb64_encrypt() opèrent toutes sur des données de tailles variables. Elles prennent toutes un vecteur d'initialisation ivec qui nécessite d'être passé au prochain appel de la même fonction pour le même message. ivec peut être initialisé avec n'importe quoi mais le destinataire a besoin de savoir avec quoi il a été initialisé, ou il ne pourra pas déchiffrer. Certains programmes et protocoles simplifient cela, comme SSH,ivec est simplement initialisé à 0. BF_cbc_encrypt() opère sur des données qui sont des multiples de 8 octets en longueur, alors que BF_cfb64_encrypt() et BF_ofb64_encrypt() sont utilisées pour chiffrer un nombre d'octets variable (le montant peut ne pas être un multiple de 8). Le but des deux dernières fonctions est de pouvoir simuler des chiffrements de flux, et de ce fait, elles ont besoin d'un paramètre num, qui est un pointeur vers un entier dans lequel est stocké la position courante de lecture ivec entre chaque appel. Cet entier doit être initialisé à 0 quand ivec est initialisé.

BF_cbc_encrypt() est la fonction d'enchaînement pour le chiffrement par blocs de Blowfish. Elle chiffre et déchiffre les morceaux de 64 bits de in en utilisant la clé schedule, puis met le résultat dans out. enc décide si un chiffrement (BF_ENCRYPT) ou un déchiffrement (BF_DECRYPT) doit être exécuté. ivec doit pointer vers un vecteur d'initialisation de 8 octets.

BF_cfb64_encrypt() est le mode CFB de Blowfish avec un retour de 64 bits. Elle chiffre et déchiffre les octets de in en utilisant la clé schedule, et met le résultat dans out. enc décide si un chiffrement (BF_ENCRYPT) ou un déchiffrement (BF_DECRYPT) doit être exécuté. ivec doit pointer vers un vecteur d'initialisation de 8 octets. num doit pointer vers un entier qui doit être initialisé à 0.

BF_ofb64_encrypt() est le mode OFB de Blowfish avec un retour de 64 bits. Elle utilise les mêmes paramètres que BF_cfb64_encrypt(), et ceux-ci doivent être initialisés de la même façon.

BF_encrypt() et BF_decrypt() sont les fonctions de bas niveau du chiffrement Blowfish. Elles chiffrent ou déchiffrent les premiers 64 bits du vecteur pointé par data, en utilisant la clé key. Ces fonctions ne doivent pas être utilisées sauf si vous implémentez « modes » pour Blowfish. L'alternative est d'utiliser BF_ecb_encrypt(). Si vous voulez utiliser ces fonctions, sachez qu'elles prennent des blocs de 32 bits dans l'ordre de l'hôte, c'est-à-dire petit-boutiste pour les plateformes petit-boutistes et gros-boutiste pour celles gros-boutistes.

VALEURS DE RETOUR

Aucune des fonctions présentées ici n'a de valeur de retour.

NOTE

Les applications devraient utiliser les fonctions de haut niveau telles EVP_EncryptInit(3), etc., au lieu d'appeler les fonctions de Blowfish directement.

HISTORIQUE

Les fonctions Blowfish sont disponibles dans toutes les versions de SSLeay et d'OpenSSL.

TRADUCTION

La traduction de cette page de manuel est maintenue par les membres de la liste <debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages-fr-extra.