ecb_crypt()
et
cbc_crypt()
implémentent le standard NBS DES (Data Encryption Standard).
Ces routines sont plus rapides et plus générales que la classique
crypt(3).
Elles sont aussi capable d'utiliser une puce de cryptage DES
si elle est disponible.
ecb_crypt()
encrypte en mode ECB (Electronic Code Book),
ce qui encode des blocs de données indépendamment les uns des autres.
cbc_crypt()
encrypte en mode CBC (Cipher Block Chaining),
qui enchaîne le cryptage des
blocs successifs.
Le mode CBC protège contre les insertions,
supressions ou substitutions de blocs.
De plus, les répétitions dans le texte en clair n'apparaîtront pas
dans le texte chiffré.
Voici comment utiliser ces routines.
Le premier paramètre,
key,
est la clé de codage 8 octets avec parité.
Pour fixer la parité de la clé, qui pour DES
est le bit de poid faible de chaque octet, utilisez
des_setparity().
Le second paramètre,
data,
contient les données à crypter ou décrypter.
Le troisième paramètre,
datalen,
est la longueur en octets de
data,
qui doit être un multiple de 8.
Le quatrième paramètre,
mode,
est formé par un
OU
binaire entre différents attributs.
Pour le sens de fonctionnement, il faut mettre DES_ENCRYPT
ou DES_DECRYPT.
Pour l'encyptage matériel (hardware) ou
logiciel (software) il faut ajouter DES_HW ou DES_SW.
Si DES_HW est indiqué et qu'il n'y a pas de matériel spécialisé
disponible, le cryptage est réalisé en mode logiciel et la routine
renvoie DESERR_NOHWDEVICE.
Pour
cbc_crypt(),
le paramètre
ivec
est un vecteur d'initialisation de 8 octets pour le chaînage.
Il est mis à jour avec le prochain vecteur d'initialisation au retour.