Blowfish(3pm)
π Blowfish β Crypt::Blowfish π
okay bestie, sit down, hydrate, because we're talking about Crypt::Blowfish, the Perl Blowfish encryption module from the Blowfish(3pm) manual. yes it's a real manpage, yes it's giving crypto main character energy, and yes you're gonna understand it. let's go π‘β¨
πΈ NAME πΈ
Crypt::Blowfish β the Perl Blowfish encryption module. that's it, that's the name, she's simple and she slays π
β¨ SYNOPSIS β¨
here's the vibe upfront, no cap:
use Crypt::Blowfish;
my $cipher = new Crypt::Blowfish $key;
my $ciphertext = $cipher->encrypt($plaintext);
my $plaintext = $cipher->decrypt($ciphertext);
You probably want to use this in conjunction with
a block chaining module like Crypt::CBC.
so basically: make a cipher with a key, encrypt stuff, decrypt stuff. and fr fr, you probably want to pair this with a block chaining module like Crypt::CBC β she does NOT want to be solo-riding this.
π¦ DESCRIPTION π¦
Blowfish is capable of strong encryption and can use key sizes up to 56 bytes (a 448 bit key). and listen β you're encouraged to take advantage of that full key size, because bigger key = strongest encryption possible from this module. she said maximize, periodt π₯
Crypt::Blowfish has the following methods, bestie:
blocksize()
keysize()
encrypt()
decrypt()
yeah, that's the whole squad. iconic lineup honestly π
π FUNCTIONS π
blocksize
Returns the size (in bytes) of the block cipher.
and here's the little quirk you need to know: Crypt::Blowfish doesn't return a key size due to its ability to use variable-length keys. more accurately β it shouldn't, but it does anyway to play nicely with others π she's a people pleaser, we love her for it.
new
my $cipher = new Crypt::Blowfish $key;
This creates a new Crypt::Blowfish BlockCipher object, using $key, where $key is a key of keysize() bytes (minimum of eight bytes). so like, eight bytes MINIMUM, don't try anything less, she'll be pressed π
encrypt
my $cipher = new Crypt::Blowfish $key;
my $ciphertext = $cipher->encrypt($plaintext);
This function encrypts $plaintext and returns the $ciphertext where $plaintext and $ciphertext must be of blocksize() bytes. (hint: Blowfish is an 8 byte block cipher π)
decrypt
my $cipher = new Crypt::Blowfish $key;
my $plaintext = $cipher->decrypt($ciphertext);
This function decrypts $ciphertext and returns the $plaintext where $plaintext and $ciphertext must be of blocksize() bytes. (hint: see previous hint π we love a callback)
π EXAMPLE π
here's a whole actual working moment for you:
my $key = pack("H16", "0123456789ABCDEF"); # min. 8 bytes
my $cipher = new Crypt::Blowfish $key;
my $ciphertext = $cipher->encrypt("plaintex"); # SEE NOTES
print unpack("H16", $ciphertext), "\n";
note the # SEE NOTES bestie β there's lore there, keep reading, don't skip ahead (jk skip ahead, it's the NOTES section, it's right there) π
π§ PLATFORMS π§
Please see the README document for platforms and performance tests. that's the whole section, she said "go read the README" and honestly? valid.
π NOTES π
okay this is the important one, lock in π
The module is capable of being used with Crypt::CBC. You're encouraged to read the perldoc for Crypt::CBC if you intend to use this module for Cipher Block Chaining modes. In fact, if you have any intentions of encrypting more than eight bytes of data with this, or any other block cipher, you're going to need some type of block chaining help. Crypt::CBC tends to be very good at this.
If you're not going to encrypt more than eight bytes, your data must be exactly eight bytes long. If need be, do your own padding. "\0" as a null byte is perfectly valid to use for this.
β οΈ real talk: over eight bytes and you NEED chaining help, no shortcuts. exactly eight bytes and you better be exactly eight bytes. pad it yourself if you have to. this is not a drill π¨
π« SEE ALSO π«
Crypt::CBC,Crypt::DES,Crypt::IDEA- Bruce Schneier, Applied Cryptography, 1995, Second Edition, published by John Wiley & Sons, Inc.
go read those, they ate and left no crumbs πβ¨
π COPYRIGHT π
The implementation of the Blowfish algorithm was developed by, and is copyright of, A.M. Kuchling.
Other parts of the perl extension and module are copyright of Systemics Ltd ( http://www.systemics.com/ ).
Code revisions, updates, and standalone release are copyright 1999-2010 W3Works, LLC.
(please respect the copyright bestie, these people did the work π)
π«Ά AUTHOR π«Ά
- Original algorithm, Bruce Shneier.
- Original implementation, A.M. Kuchling.
- Original Perl implementation, Systemics Ltd.
- Current maintenance by W3Works, LLC.
- Current revision and maintainer: Dave Paris
<amused@pobox.com>
and that's the whole page, babe π this was perl v5.42.3, dated 2026-08-19, and it's the Blowfish(3pm) manpage. you now know Blowfish better than 90% of people who claim they know Blowfish, and that's on periodt. encrypt responsibly, pad your data, and never skip the block chaining. mwah π‘π
β¨
π¦ where this page comes from
- ubuntu stonking: libcrypt-blowfish-perl 2.14-3build5 Β· other
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms