manpagez: man pages & more
man Crypt::Stream::XChaCha(3)
Home | html | info | man
Crypt::Stream::XChaCha(3)                  User Contributed Perl Documentation



NAME

       Crypt::Stream::XChaCha - 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

       Provides an interface to the XChaCha20 stream cipher, an extended-nonce
       variant of ChaCha20 using a 192-bit (24-byte) nonce.


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)

   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_bytes = $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::ChaCha(3), Crypt::Stream::XSalsa20(3)

       o   <https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha>

perl v5.34.3                      2026-05-11         Crypt::Stream::XChaCha(3)

cryptx 0.89.0 - Generated Tue May 12 15:55:22 CDT 2026
© manpagez.com 2000-2026
Individual documents may contain additional copyright information.