EVP_DES_CBC(3) | Library Functions Manual | EVP_DES_CBC(3)

# NAME

`EVP_des_cbc`, `EVP_des_cfb`, `EVP_des_cfb1`, `EVP_des_cfb8`, `EVP_des_cfb64`, `EVP_des_ecb`, `EVP_des_ofb`, `EVP_des_ede`, `EVP_des_ede_cbc`, `EVP_des_ede_cfb`, `EVP_des_ede_cfb64`, `EVP_des_ede_ecb`, `EVP_des_ede_ofb`, `EVP_des_ede3`, `EVP_des_ede3_cbc`, `EVP_des_ede3_cfb`, `EVP_des_ede3_cfb1`, `EVP_des_ede3_cfb8`, `EVP_des_ede3_cfb64`, `EVP_des_ede3_ecb`, `EVP_des_ede3_ofb`, `EVP_desx_cbc` — EVP DES cipher

# SYNOPSIS

library “libcrypto”
`#include <openssl/evp.h>`

const EVP_CIPHER *
`EVP_des_cbc`(void);

const EVP_CIPHER *
`EVP_des_cfb`(void);

const EVP_CIPHER *
`EVP_des_cfb1`(void);

const EVP_CIPHER *
`EVP_des_cfb8`(void);

const EVP_CIPHER *
`EVP_des_cfb64`(void);

const EVP_CIPHER *
`EVP_des_ecb`(void);

const EVP_CIPHER *
`EVP_des_ofb`(void);

const EVP_CIPHER *
`EVP_des_ede`(void);

const EVP_CIPHER *
`EVP_des_ede_cbc`(void);

const EVP_CIPHER *
`EVP_des_ede_cfb`(void);

const EVP_CIPHER *
`EVP_des_ede_cfb64`(void);

const EVP_CIPHER *
`EVP_des_ede_ecb`(void);

const EVP_CIPHER *
`EVP_des_ede_ofb`(void);

const EVP_CIPHER *
`EVP_des_ede3`(void);

const EVP_CIPHER *
`EVP_des_ede3_cbc`(void);

const EVP_CIPHER *
`EVP_des_ede3_cfb`(void);

const EVP_CIPHER *
`EVP_des_ede3_cfb1`(void);

const EVP_CIPHER *
`EVP_des_ede3_cfb8`(void);

const EVP_CIPHER *
`EVP_des_ede3_cfb64`(void);

const EVP_CIPHER *
`EVP_des_ede3_ecb`(void);

const EVP_CIPHER *
`EVP_des_ede3_ofb`(void);

const EVP_CIPHER *
`EVP_desx_cbc`(void);

# DESCRIPTION

These functions provide the DES encryption algorithm in the evp(3) framework. DES is a block cipher operating on 64 bit blocks. The key length to be used for EVP_EncryptInit(3) is 64 bits. However, only 56 of these bits are used in the encryption algorithm. The least significant bit in each of the eight bytes is only used for checking parity. Using this algorithm is discouraged because the short key length makes it vulnerable to brute force attacks.

`EVP_des_cbc`(), `EVP_des_cfb1`(), `EVP_des_cfb8`(), `EVP_des_cfb64`(), `EVP_des_ecb`(), and `EVP_des_ofb`() provide DES in CBC, CFB with 1-bit shift, CFB with 8-bit shift, CFB with 64-bit shift, ECB, and OFB modes. `EVP_des_cfb`() is an alias for `EVP_des_cfb64`(), implemented as a macro.

`EVP_des_ede_cbc`(), `EVP_des_ede_cfb64`(), `EVP_des_ede_ecb`(), and `EVP_des_ede_ofb`() provide two key triple DES in CBC, CFB with 64-bit shift, ECB, and OFB modes. `EVP_des_ede_cfb`() is an alias for `EVP_des_ede_cfb64`(), implemented as a macro. `EVP_des_ede`() is an alias for `EVP_des_ede_ecb`().

`EVP_des_ede3_cbc`(), `EVP_des_ede3_cfb1`(), `EVP_des_ede3_cfb8`(), `EVP_des_ede3_cfb64`(), `EVP_des_ede3_ecb`(), `EVP_des_ede3_ofb`() provide three key triple DES in CBC, CFB with 1-bit shift, CFB with 8-bit shift, CFB with 64-bit shift, ECB, and OFB modes. `EVP_des_ede3_cfb`() is an alias for `EVP_des_ede3_cfb64`(), implemented as a macro. `EVP_des_ede3`() is an alias for `EVP_des_ede3_ecb`().

`EVP_desx_cbc`() provides the DES-X encryption algorithm in CBC mode. It uses a key length of 128 bits and acts on blocks of 128 bits.

# RETURN VALUES

These functions return an EVP_CIPHER structure that provides the implementation of the symmetric cipher.

# SEE ALSO

evp(3), EVP_EncryptInit(3)

# HISTORY

`EVP_des_cbc`(), `EVP_des_cfb`(), `EVP_des_ecb`(), `EVP_des_ofb`(), `EVP_des_ede`(), `EVP_des_ede_cbc`(), `EVP_des_ede_cfb`(), `EVP_des_ede_ofb`(), `EVP_des_ede3`(), `EVP_des_ede3_cbc`(), `EVP_des_ede3_cfb`(), and `EVP_des_ede3_ofb`() first appeared in SSLeay 0.5.1. `EVP_desx_cbc`() first appeared in SSLeay 0.6.2. These functions have been available since OpenBSD 2.4.

`EVP_des_ede_ecb`() and `EVP_des_ede3_ecb`() first appeared in OpenSSL 0.9.7 and have been available since OpenBSD 3.2.

`EVP_des_cfb1`(), `EVP_des_cfb8`(), `EVP_des_cfb64`(), `EVP_des_ede_cfb64`(), `EVP_des_ede3_cfb1`(), `EVP_des_ede3_cfb8`(), and `EVP_des_ede3_cfb64`() first appeared in OpenSSL 0.9.7e and have been available since OpenBSD 3.8.

June 8, 2025 | Debian