Crypt::Stream::Rabbit(3) User Contributed Perl Documentation
NAME
Crypt::Stream::Rabbit - Stream cipher Rabbit
SYNOPSIS
use Crypt::Stream::Rabbit;
# encrypt
my $key = "1234567890123456";
my $iv = "12345678";
my $enc_stream = Crypt::Stream::Rabbit->new($key, $iv);
my $ct = $enc_stream->crypt("plain message");
# decrypt
my $dec_stream = Crypt::Stream::Rabbit->new($key, $iv);
my $pt = $dec_stream->crypt($ct);
DESCRIPTION
Provides an interface to the Rabbit stream cipher.
METHODS
Unless noted otherwise, assume $stream is an existing stream object
created via "new", for example:
my $stream = Crypt::Stream::Rabbit->new($key, $iv);
new
my $stream = Crypt::Stream::Rabbit->new($key, $iv);
# $key .. [binary string] key length must be at most 16 bytes
# $iv .. [binary string] IV length must be at most 8 bytes
my $stream = Crypt::Stream::Rabbit->new($key);
# note: new($key) skips IV setup entirely, while new($key, "") performs
# IV setup with a zero-length IV. These produce different keystreams.
crypt
Encrypts or decrypts data. The output has the same length as the input.
Returns a binary string (raw bytes).
The input is converted using Perl's usual scalar stringification.
Passing "undef" is treated as an empty string with the usual warning,
and numeric scalars are stringified before processing.
my $ciphertext = $stream->crypt($plaintext);
#or
my $plaintext = $stream->crypt($ciphertext);
keystream
Returns $length bytes of raw keystream as a binary string.
The length is taken using Perl's usual numeric coercion. Values that
coerce to an oversized unsigned length are rejected as too large.
my $random_key = $stream->keystream($length);
clone
Returns a copy of the stream cipher object in its current state.
my $stream2 = $stream->clone();
SEE ALSO
o Crypt::Stream::RC4(3), Crypt::Stream::ChaCha(3),
Crypt::Stream::Salsa20(3), Crypt::Stream::Sober128(3)
o <https://en.wikipedia.org/wiki/Rabbit_(cipher)>
o <https://www.rfc-editor.org/rfc/rfc4503>
perl v5.34.3 2026-05-11 Crypt::Stream::Rabbit(3)
cryptx 0.89.0 - Generated Tue May 12 11:27:35 CDT 2026
