Crypt::Mode::OFB(3)
π Crypt::Mode::OFB β the perl doc for it, bestie π¦
okay so real talk: this is the User Contributed Perl Documentation page for Crypt::Mode::OFB(3), and I'm literally about to make OFB make sense for you. no cap. π«Ά
β¨ NAME β¨
Crypt::Mode::OFB β Block cipher mode OFB [Output feedback]. that's it, that's the vibe. π«
πΈ SYNOPSIS πΈ
here's the whole thing in action, bestie β copy it, run it, love it:
use Crypt::Mode::OFB;
my $m = Crypt::Mode::OFB->new('AES');
my $key = '1234567890123456';
my $iv = '1234567890123456';
my $plaintext = 'example plaintext';
my $chunk1 = 'example ';
my $chunk2 = 'plaintext';
# encrypt or decrypt in one call
my $single_ciphertext = $m->encrypt($plaintext, $key, $iv);
my $single_plaintext = $m->decrypt($single_ciphertext, $key, $iv);
# encrypt more chunks
$m->start_encrypt($key, $iv);
my $chunked_ciphertext = '';
$chunked_ciphertext .= $m->add($chunk1);
$chunked_ciphertext .= $m->add($chunk2);
# decrypt more chunks
$m->start_decrypt($key, $iv);
my $chunked_plaintext = '';
$chunked_plaintext .= $m->add($chunked_ciphertext);
like, one-shot mode or chunked mode, your call. main character energy either way. π
π DESCRIPTION π
This module implements OFB cipher mode. it's giving "streaming, no padding, we move." β¨
β οΈ heads up bestie: it works only with ciphers from CryptX (that's Crypt::Cipher::NNNN). don't come at it with anything else, it will simply not slay.
π METHODS π
Unless noted otherwise, assume $m is an existing mode object created via "new", for example:
my $m = Crypt::Mode::OFB->new('AES');
π new π
my $m = Crypt::Mode::OFB->new($name);
#or
my $m = Crypt::Mode::OFB->new($name, $cipher_rounds);
# $name ............ [string] one of 'AES', 'Anubis', 'Blowfish', 'CAST5', 'Camellia', 'DES', 'DES_EDE',
# 'KASUMI', 'Khazad', 'MULTI2', 'Noekeon', 'RC2', 'RC5', 'RC6',
# 'SAFERP', 'SAFER_K128', 'SAFER_K64', 'SAFER_SK128', 'SAFER_SK64',
# 'SEED', 'Skipjack', 'Twofish', 'XTEA', 'IDEA', 'Serpent'
# or any <NAME> for which there is a Crypt::Cipher::<NAME> module
# $cipher_rounds ... [integer] optional, number of rounds for given cipher
so $name is a string, one of those literal names up there βοΈ, or literally any <NAME> as long as there's a Crypt::Cipher::<NAME> module for it. and $cipher_rounds is an optional integer β the number of rounds for the given cipher. fancy. π
π¦ encrypt π¦
Encrypts the plaintext in a single call. Returns the ciphertext as a binary string. π«§
The plaintext scalar is converted to bytes using Perl's usual scalar stringification. Defined scalars β including numbers and string-overloaded objects β are accepted. "undef" is treated as an empty string and may emit Perl's usual "uninitialized value" warning. (iykyk π)
my $ciphertext = $m->encrypt($plaintext, $key, $iv);
π decrypt π
Decrypts the ciphertext in a single call. Returns the plaintext as a binary string. π«§
The ciphertext scalar is converted to bytes using Perl's usual scalar stringification. Defined scalars β including numbers and string-overloaded objects β are accepted. "undef" is treated as an empty string and may emit Perl's usual "uninitialized value" warning. (same warning, same drama π)
my $plaintext = $m->decrypt($ciphertext, $key, $iv);
π§ start_encrypt π§
Initializes encryption mode. Returns the object itself. so you can chain, obviously. π«
$m->start_encrypt($key, $iv);
π start_decrypt π
Initializes decryption mode. Returns the object itself. yes, also chainable. iconic. β¨
$m->start_decrypt($key, $iv);
π₯ add π₯
Feeds data to the encryption or decryption stream. Returns a binary string. π«Ά
Each argument is converted to bytes using Perl's usual scalar stringification. Defined scalars β including numbers and string-overloaded objects β are accepted. "undef" is treated as an empty string and may emit Perl's usual "uninitialized value" warning. (you already know π)
# in encrypt mode
my $ciphertext = $m->add($plaintext);
# in decrypt mode
my $plaintext = $m->add($ciphertext);
π§ββοΈ finish π§ββοΈ
okay so this one's lowkey funny: OFB is a streaming mode and doesn't use padding, so "finish" returns an empty string. π«§ it literally exists just for API consistency with Crypt::Mode::CBC and Crypt::Mode::ECB, and you may safely call it or omit it. no pressure bestie, it's not mad at you. π
$m->start_encrypt($key, $iv);
my $ciphertext = '';
$ciphertext .= $m->add($chunk1);
$ciphertext .= $m->add($chunk2);
$ciphertext .= $m->finish; # returns ''
β SEE ALSO β
CryptX,Crypt::CipherCrypt::Cipher::AES,Crypt::Cipher::Blowfish,...- <https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Output_feedback_.28OFB.29>
and that's the whole page, bestie πβ¨π¦ β this was perl v5.42.0, dated 2026-05-11, Crypt::Mode::OFB(3). go encrypt something cute. ππΈπ«Ά
π¦ where this page comes from
- opensuse-leap 16.0: perl-CryptX 0.89.0-bp160.1.1 Β· Artistic-1.0 OR GPL-1.0-or-later
- opensuse-leap 16.0: perl-CryptX 0.89.0-bp160.1.1 Β· Artistic-1.0 OR GPL-1.0-or-later
- opensuse-leap 16.0: perl-CryptX 0.89.0-bp160.1.1 Β· Artistic-1.0 OR GPL-1.0-or-later
- opensuse-leap 16.0: perl-CryptX 0.89.0-bp160.1.1 Β· Artistic-1.0 OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms