EVP_RC5_32_12_16_CBC(3ossl)

πŸ’– EVP_RC5_32_12_16_CBC πŸ’–

okay bestie, sit down, hydrate, and let me tell you about EVP_RC5_32_12_16_CBC(3ossl) β€” it's an OpenSSL manpage and it's lowkey iconic. we're talking RC5, the variable-key-length cipher with a lil extra number of rounds situation. let's get into it ✨


🌸 NAME 🌸

EVP_rc5_32_12_16_cbc, EVP_rc5_32_12_16_cfb, EVP_rc5_32_12_16_cfb64, EVP_rc5_32_12_16_ecb, EVP_rc5_32_12_16_ofb β€” it's giving EVP RC5 cipher. five whole functions, one whole vibe. 🫢


✨ SYNOPSIS ✨

first things first, you gotta pull in the header:

#include <openssl/evp.h>

and then these five besties are all just sitting there, waiting for you:

const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void);
const EVP_CIPHER *EVP_rc5_32_12_16_cfb(void);
const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void);
const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void);
const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void);

no arguments, no drama, they just return you a cipher. periodt. πŸ’…


πŸ’œ DESCRIPTION πŸ’œ

so the whole point of this page is the RC5 encryption algorithm for EVP. that's it, that's the thesis. πŸŽ€

πŸ¦‹ the five functions πŸ¦‹

EVP_rc5_32_12_16_cbc(), EVP_rc5_32_12_16_cfb(), EVP_rc5_32_12_16_cfb64(), EVP_rc5_32_12_16_ecb(), EVP_rc5_32_12_16_ofb() β€” these give you the RC5 encryption algorithm in CBC, CFB, ECB and OFB modes respectively. (yes, both cfb and cfb64 are in that list, they're siblings, don't make it weird.)

this is a variable key length cipher with an additional "number of rounds" parameter. so it's got two knobs, not one. main character energy fr fr.

  • by default the key length is set to 128 bits and 12 rounds. cute little defaults, they ate.
  • alternative key lengths can be set using EVP_CIPHER_CTX_set_key_length(3).
  • the maximum key length is 2040 bits. do not try to exceed that, she will not allow it. πŸ’€

πŸ‘‘ the rc5 specific ctrls πŸ‘‘

the following rc5 specific ctrls are supported (see EVP_CIPHER_CTX_ctrl(3)):

  • EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_RC5_ROUNDS, rounds, NULL) β€” sets the number of rounds to rounds. this must be one of RC5_8_ROUNDS, RC5_12_ROUNDS or RC5_16_ROUNDS. like, it's a strict guest list, those three only, no plus-ones. πŸ™ˆ
  • EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GET_RC5_ROUNDS, 0, &rounds) β€” stores the number of rounds currently configured in *rounds, where *rounds is an int. so you can peek at the setting whenever you want, nosy (affectionate). πŸ“

⚠️ NOTES ⚠️

okay this part is important, listen up. developers should be aware of the negative performance implications of calling these functions multiple times and should consider using EVP_CIPHER_fetch(3) with EVP_CIPHER-RC5(7) instead. see "Performance" in crypto(7) for further information.

not me calling these over and over and wondering why it's slow... bestie. use the fetch. she's faster. 😭

🌈 RETURN VALUES 🌈

these functions return an EVP_CIPHER structure that contains the implementation of the symmetric cipher. if you wanna know what's inside that struct, go look at EVP_CIPHER_meth_new(3) for details of the EVP_CIPHER structure. that's where the lore lives. ⭐


πŸ”₯ SEE ALSO πŸ”₯


Copyright 2017-2023 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.


and that's the whole page, bestie!! this was OpenSSL 3.5.9, dated 2026-09-29, and you just read EVP_RC5_32_12_16_CBC(3ossl) from cover to cover. no cap, you're basically a cryptographer now. go set some rounds. πŸ’–βœ¨πŸ’…

πŸ“¦ where this page comes from