Authen...lowfish(3pm)

✨ NAME ✨

Authen::Passphrase::EggdropBlowfish β€” it's giving passphrases, but make them Eggdrop's blowfish.mod era πŸ’–

okay so real quick, this is a Perl module in the User Contributed Perl Documentation family, and it's lowkey a whole vibe: it's how you deal with passphrases hashed by Eggdrop's blowfish module. no cap.


🌸 SYNOPSIS 🌸

use Authen::Passphrase::EggdropBlowfish;

$ppr = Authen::Passphrase::EggdropBlowfish->new(
        hash_base64 => "9tpsG/61YqX/");

$ppr = Authen::Passphrase::EggdropBlowfish->new(
        passphrase => "passphrase");

$hash = $ppr->hash;
$hash_base64 = $ppr->hash_base64;

if($ppr->match($passphrase)) { ...

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so bestie, picture this: an object of this class wraps up a passphrase that's been hashed with the Blowfish-based algorithm used in Eggdrop's blowfish.mod. that's the whole thing. it's a subclass of Authen::Passphrase, and this doc just assumes you already know and love that class's documentation, because we're not re-explaining it here fr fr. πŸ’…

now the juicy deets. this hash scheme uses no salt at all, and it does not accept a zero-length passphrase β€” so like, empty string? not invited to the party. instead it takes your passphrase and uses it as a Blowfish key to encrypt a standard plaintext block. the hash is the ciphertext block. that's it. that's the whole algorithm. ✨

here's the iconic part: the standard Blowfish key schedule only accepts keys from 8 to 56 bytes long, but this algorithm relaxes that requirement and accepts any non-zero length. slay. and heads up β€” only up to 72 bytes of passphrase/key are significant; any more than that just gets ignored, like your ex's texts. πŸ’€

in Eggdrop the hash is represented as a "+" followed by twelve base 64 digits. the first six digits encode the second half of the hash, and the last six encode the first half (yes, it's backwards, it's giving chaotic but we respect it). within each half the bytes are encoded in reverse order. and the base 64 digits are, in this exact order: ".", "/", "0" to "9", "a" to "z", "A" to "Z". periodt. πŸ‘‘

⚠️ Warning bestie, for real: the hash is small by modern standards, and the lack of salt is a genuine weakness in this scheme. like, it's a weakness, not a quirk. if you want a scheme that makes better use of Blowfish, go look at Authen::Passphrase::BlowfishCrypt instead. do not use this one for anything that needs to actually be secure. πŸ™ˆ

πŸŽ€ CONSTRUCTOR πŸŽ€

Authen::Passphrase::EggdropBlowfish->new(ATTR => VALUE, ...)

Generates a shiny new passphrase recogniser object using the Eggdrop blowfish.mod algorithm. 🫢 these are the attributes you can pass it:

  • hash β€” the hash, as a string of eight bytes.
  • hash_base64 β€” the hash, as a string of twelve base 64 digits.
  • passphrase β€” a passphrase that will be accepted.
Either the hash or the passphrase must be given. like, one of them. pick one. not neither. πŸ™…β€β™€οΈ

πŸ’œ METHODS πŸ’œ

  • $ppr->hash β€” returns the hash value, as a string of eight bytes. ✨
  • $ppr->hash_base64 β€” returns the hash value, as a string of twelve base 64 digits. 🌈
  • $ppr->match(PASSPHRASE) β€” this method is part of the standard Authen::Passphrase interface. so if you know that interface, you already know this one. iykyk. πŸ’…

🌟 SEE ALSO 🌟

  • Authen::Passphrase
  • Crypt::Eksblowfish::Uklblowfish

πŸ‘‘ AUTHOR πŸ‘‘

Andrew Main (Zefram) <zefram@fysh.org> β€” absolute icon, we stan. πŸ’–


Copyright (C) 2006, 2007, 2009, 2010, 2012 Andrew Main (Zefram) <zefram@fysh.org>


🧚 LICENSE 🧚

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. fr fr, go wild. πŸŽ€


and that's the whole page bestie, hope it ate πŸ’… this was perl v5.40.1, dated 2026-05-06, straight from the Authen...lowfish(3pm) page β€” stay hydrated, salt your hashes (just not with this module lol), and go forth and match some passphrases. πŸ¦‹βœ¨

πŸ“¦ where this page comes from