crypt, encrypt ou setkey Subroutine

Objectif

Chiffre ou déchiffre les données.

Bibliothèque

Bibliothèque C standard (libc.a)

Syntaxe

char *crypt (PW, Salt)
const char * PW, * Salt;
void encrypt (Block, EdFlag)
char Block[64];
int EdFlag;
void setkey (Key)
const char * Key;

Descriptif

Les sous-routines crypt et encrypt chiffrent ou déchiffrent les données. La sous-routine crypt effectue un chiffrement unidirectionnel d'un tableau de données fixe avec le paramètre PW fourni. La sous-routine utilise le paramètre Sel pour faire varier l'algorithme de chiffrement.

La sous-routine encrypt chiffre ou déchiffre les données fournies dans le paramètre Block à l'aide de la clé fournie par un appel antérieur à la sous-routine setkey . Les données du paramètre Bloc en entrée doivent être un tableau de 64 caractères. Chaque caractère doit être un caractère 0 ou 1.

Si vous devez lier statiquement des fonctions à partir de libc.a for crypt , procédez comme suit:

  1. Créez un fichier et ajoutez ce qui suit:
    #!
    ___setkey
    ___encrypt
    ___crypt
  2. Effectuez la liaison.
  3. Ajoutez les éléments suivants au fichier make:
    -bI:YourFileName
    YourFileName est le nom du fichier que vous avez créé à l'étape 1. Il doit ressembler à ce qui suit:
    LDFLAGS=bnoautoimp -bI:/lib/syscalls.exp -bI:YourFileName -lc

Ces sous-programmes sont fournis à des fins de compatibilité avec les implémentations du système UNIX.

Paramètres

Article Descriptif
Bloc Identifie un tableau de 64 caractères contenant les valeurs (char) 0 et (char) 1. A son retour, cette mémoire tampon contient les données chiffrées ou déchiffrées.
EdFlag Détermine si la sous-routine chiffre ou déchiffre les données. Si ce paramètre est défini sur 0, les données sont chiffrées. Si ce paramètre est une valeur différente de zéro, les données sont déchiffrées. Si le fichier /usr/lib/libdes ou /usr/lib/libdes_64 n'existe pas et si le paramètre EdFlag est défini sur une valeur différente de zéro, la sous-routine encrypt renvoie le code d'erreur ENOSYS . Les fichiers /usr/lib/libdes et /usr/lib/libdes_64 font partie de l'ensemble de fichiers des , qui se trouve dans AIX® Expansion Pack.
key Indique un tableau à 64 éléments de 0 et 1 transtypés en tant que type de données const char . Le paramètre Clé est utilisé pour chiffrer ou déchiffrer les données.
PartnerWorld Indique la chaîne à chiffrer.
Sel de cryptage Détermine l'algorithme appliqué par le paramètre PW pour générer la chaîne de sortie renvoyée. Si l'accolade gauche ({) n'est pas le premier caractère de la valeur spécifiée par le paramètre Salt , puis la sous-routine utilise l'algorithme DES (Data Encryption Standard). Pour l'algorithme DES, utilisez le paramètre Sel pour faire varier l'algorithme de hachage de l'une des méthodes 4096. Le paramètre Sel doit être une chaîne de 2 caractères appartenant aux types de caractères suivants:
A - Z
Caractères alphabétiques majuscules
a à z
Caractères alphabétiques minuscules
0-9
Caractères numériques
.
Période
/
Barre oblique
Si l'accolade gauche ({) est le premier caractère de la valeur spécifiée par le paramètre Salt , puis l'algorithme de mot de passe chargeable (LPA) utilise le nom spécifié entre les accolades ({ }). Un ensemble de caractères de sel de cryptage suit le nom LPA et se termine par un signe dollar ($). La longueur du caractère de sel de cryptage dépend de la zone permanente de programme (LPA) spécifiée. L'exemple suivant illustre une valeur possible pour la zone permanente de programme (LPA) SMD5 que le paramètre Salt spécifie:
{SMD5}JVDbGx8K$

Valeurs renvoyées

La sous-routine crypt renvoie un pointeur vers le mot de passe chiffré. La zone statique indiquée par ce pointeur peut être remplacée par des appels ultérieurs.

Si la sous-routine crypt échoue, un pointeur null est renvoyé et la variable globale errno est définie pour indiquer l'erreur.

Codes d'erreur

La sous-routine encrypt renvoie les codes d'erreur suivants:

Article Descriptif
ENOSYS La sous-routine encrypt a été appelée à l'aide du paramètre EdFlag qui a été défini sur une valeur différente de zéro. De plus, le fichier /usr/lib/libdes ou /usr/lib/libdes_64 n'existe pas. Les fichiers /usr/lib/libdes et /usr/lib/libdes_64 font partie de l'ensemble de fichiers des , qui se trouve dans AIX Expansion Pack.