Bu işlevler 64 bitlik iletileri şifreler ve deşifrelerler. setkey() işlevi encrypt() işlevi tarafından kullanılan anahtarı belirler. Burada kullanılan anahtar parametresi bir bayt dizisidir ve her bayt 1 ya da 0 sayısal değerine sahiptir. anahtar[n] dizisinin indis değeri n=8*i-1 olan elemanları yoksayılır, bu durumda asıl anahtar uzunluğu 56 bit olur.
setkey() işlevi kendine aktarılan tamponu im olarak 0 verilmişse şifreleyerek, 0 verilmişse deşifreleyerek değiştirir. anahtar parametresi gibi blok parametresi de şifrelenmiş değerin bit gösteriminin vektörüdür. Sonuç aynı vektör içinde döner.
Bu iki işlev evresel değildir, yani anahtar verisi durağan bellek bölgesinde saklanır. setkey_r() ve encrypt_r() işlevleri evreseldir. ve anahtar verisini saklamak için crypt_data veri yapısını kullanırlar:
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 int current_saltbits;
int direction, initialized;
};