[ Bottom of Page | Previous Page | Next Page | Contents | Index | Library Home | Legal | Search ]

Technical Reference: Base Operating System and Extensions, Volume 1

crypt, encrypt, or setkey Subroutine


Encrypts or decrypts data.


Standard C Library (libc.a)


char *crypt (PW, Salt)
const char * PW, * Salt;

void encrypt (Block, EdFlag)
char Block[64];
int EdFlag;

void setkey (Key)
const char * Key;


The crypt and encrypt subroutines encrypt or decrypt data. The crypt subroutine performs a one-way encryption of a fixed data array with the supplied PW parameter. The subroutine uses the Salt parameter to vary the encryption algorithm.

The encrypt subroutine encrypts or decrypts the data supplied in the Block parameter using the key supplied by an earlier call to the setkey subroutine. The data in the Block parameter on input must be an array of 64 characters. Each character must be an char 0 or char 1.

If you need to statically bind functions from libc.a for crypt do the following:

  1. Create a file and add the following:

  2. Perform the linking.
  3. Add the following to the make file:


    where YourFileName is the name of the file you created in step 1. It should look like the following:

    LDFLAGS=bnoautoimp -bI:/lib/syscalls.exp -bI:YourFileName -lc

These subroutines are provided for compatibility with UNIX system implementations.


Block Identifies a 64-character array containing the values (char) 0 and (char) 1. Upon return, this buffer contains the encrypted or decrypted data.
EdFlag Determines whether the subroutine encrypts or decrypts the data. If this parameter is 0, the data is encrypted. If this is a nonzero value, the data is decrypted. If the /usr/lib/libdes.a file does not exist and the EdFlag parameter is set to nonzero, the encrypt subroutine returns the ENOSYS error code.
Key Specifies an 64-element array of 0's and 1's cast as a const char data type. The Key parameter is used to encrypt or decrypt data.
PW Specifies up to an 8-character string to be encrypted.
Salt Specifies a 2-character string chosen from the following:
Uppercase alpha characters
Lowercase alpha characters
Numeric characters
  The Salt parameter is used to vary the hashing algorithm in one of 4096 different ways.

Return Values

The crypt subroutine returns a pointer to the encrypted password. The static area this pointer indicates may be overwritten by subsequent calls.

Error Codes

The encrypt subroutine returns the following:

ENOSYS The encrypt subroutine was called with the EdFlag parameter which was set to a nonzero value. Also, the /usr/lib/libdes.a file does not exist.

Related Information

The newpass (newpass Subroutine) subroutine.

The login command, passwd command, su command.

List of Security and Auditing Subroutines and Subroutines Overview in AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs.

[ Top of Page | Previous Page | Next Page | Contents | Index | Library Home | Legal | Search ]