Crypt::...XChaCha(3)
β¨ NAME β¨
okay bestie, welcome to the Crypt::...XChaCha(3) page β yes, a User Contributed Perl Documentation page β and the main character is Crypt::Stream::XChaCha: the stream cipher XChaCha20. π
π¦ SYNOPSIS π¦
use Crypt::Stream::XChaCha;
# encrypt
my $key = "12345678901234567890123456789012"; # 32 bytes
my $nonce = "123456789012345678901234"; # 24 bytes
my $enc_stream = Crypt::Stream::XChaCha->new($key, $nonce);
my $ct = $enc_stream->crypt("plain message");
# decrypt
my $dec_stream = Crypt::Stream::XChaCha->new($key, $nonce);
my $pt = $dec_stream->crypt($ct);
πΈ DESCRIPTION πΈ
Since: CryptX-0.089 β noted, bestie. β¨
This gives you an interface to the XChaCha20 stream cipher, which is an extended-nonce variant of ChaCha20 using a 192-bit (24-byte) nonce. Lowkey iconic. π
π METHODS π
Unless noted otherwise, assume $stream is an existing stream object created via new, for example:
my $stream = Crypt::Stream::XChaCha->new($key, $nonce);
π new π
my $stream = Crypt::Stream::XChaCha->new($key, $nonce);
#or
my $stream = Crypt::Stream::XChaCha->new($key, $nonce, $rounds);
# $key .. [binary string] 32 bytes
# $nonce .. [binary string] 24 bytes
# $rounds .. [integer] optional, rounds (DEFAULT: 20)
$keyβ [binary string] 32 bytes.$nonceβ [binary string] 24 bytes.$roundsβ [integer] optional, rounds (DEFAULT: 20).
π₯ 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. No sneaky giant lengths, periodt. π₯
my $random_bytes = $stream->keystream($length);
π¦ clone π¦
Returns a copy of the stream cipher object in its current state. Snapshot slay. πΈ
my $stream2 = $stream->clone;
π SEE ALSO π
Crypt::Stream::ChaCha,Crypt::Stream::XSalsa20<https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha>β go read the draft, bestie.
xoxo π this page is perl v5.42.0, dated 2026-05-11, and it's the Crypt::...XChaCha(3) manual. periodt β¨
π¦ 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