Crypt::...FER_K64(3)

πŸ’– Crypt::Cipher::SAFER_K64 πŸ’–

okay bestie, you found the Crypt::...FER_K64(3) page from User Contributed Perl Documentation β€” welcome to the SAFER_K64 corner of Perl crypto πŸ’…βœ¨

🌸 NAME 🌸

Crypt::Cipher::SAFER_K64 β€” a symmetric cipher named SAFER_K64, with a key size of 64 bits. periodt. πŸŽ€

πŸ¦‹ SYNOPSIS πŸ¦‹

Two ways to do CBC mode with SAFER_K64, bestie. example 2 is the slower route, and it says so right there:

### example 1
use Crypt::Mode::CBC;

my $key = '...'; # length must be a valid key size for this cipher
my $iv = '...';  # 16 bytes
my $cbc = Crypt::Mode::CBC->new('SAFER_K64');
my $ciphertext = $cbc->encrypt("secret data", $key, $iv);

### example 2 (slower)
use Crypt::CBC;
use Crypt::Cipher::SAFER_K64;

my $key = '...'; # length must be a valid key size for this cipher
my $iv = '...';  # 16 bytes
my $cbc = Crypt::CBC->new( -cipher=>'Cipher::SAFER_K64', -key=>$key, -iv=>$iv );
my $ciphertext = $cbc->encrypt("secret data");

✨ DESCRIPTION ✨

This module implements the SAFER_K64 cipher, and its interface is compatible with Crypt::CBC. 🫢

⚠️ okay important: this module only implements single-block encryption and decryption. For general data, use a block mode such as Crypt::Mode::CBC, Crypt::Mode::CTR, or Crypt::CBC (which is slower). no cap, don't try to use single blocks for your whole dataset πŸ’€

πŸ”₯ METHODS πŸ”₯

Unless a method says otherwise, assume $c is an existing cipher object created via new, like this, bestie:

my $c = Crypt::Cipher::SAFER_K64->new($key);

πŸŽ€ new πŸŽ€

Make a fresh cipher object. You can pass just the key, or the key plus rounds:

my $c = Crypt::Cipher::SAFER_K64->new($key);
#or
my $c = Crypt::Cipher::SAFER_K64->new($key, $rounds);

# $key .... [binary string] key of an accepted length (see keysize, min_keysize, max_keysize)
# $rounds . [integer] optional, number of rounds (if supported by the cipher; croaks on invalid value)

So $key is a binary string key of an accepted length β€” check keysize, min_keysize, and max_keysize. $rounds is an optional integer for the number of rounds, if the cipher supports it, and it croaks on an invalid value. πŸ’œ

πŸ’– encrypt πŸ’–

Encrypts exactly one block of plaintext, bestie. The length of $plaintext must equal blocksize; otherwise it croaks. An empty string is accepted and returned unchanged.

my $ciphertext = $c->encrypt($plaintext);

Returns the encrypted block as a binary string (raw bytes). πŸ”₯

πŸ¦‹ decrypt πŸ¦‹

Decrypts exactly one block of ciphertext, bestie. The length of $ciphertext must equal blocksize; otherwise it croaks. An empty string is accepted and returned unchanged.

my $plaintext = $c->decrypt($ciphertext);

Returns the decrypted block as a binary string (raw bytes). 🌸

πŸ‘‘ keysize πŸ‘‘

Just an alias for max_keysize. that's the whole vibe.

$c->keysize;
#or
Crypt::Cipher::SAFER_K64->keysize;
#or
Crypt::Cipher::SAFER_K64::keysize;

🌈 blocksize 🌈

Returns the cipher block size (in bytes). iconic.

$c->blocksize;
#or
Crypt::Cipher::SAFER_K64->blocksize;
#or
Crypt::Cipher::SAFER_K64::blocksize;

⭐ max_keysize ⭐

Returns the maximum key size (in bytes). slay.

$c->max_keysize;
#or
Crypt::Cipher::SAFER_K64->max_keysize;
#or
Crypt::Cipher::SAFER_K64::max_keysize;

πŸ“ min_keysize πŸ“

Returns the minimum key size (in bytes). yes bestie.

$c->min_keysize;
#or
Crypt::Cipher::SAFER_K64->min_keysize;
#or
Crypt::Cipher::SAFER_K64::min_keysize;

🧚 default_rounds 🧚

Returns the cipher's default round count. love that for us.

$c->default_rounds;
#or
Crypt::Cipher::SAFER_K64->default_rounds;
#or
Crypt::Cipher::SAFER_K64::default_rounds;

🌟 SEE ALSO 🌟


cute sign-off time: this page is perl v5.42.0, dated 2026-05-11, and it's serving User Contributed Perl Documentation energy. mwah πŸ’‹πŸ’–

πŸ“¦ where this page comes from