Cryptography

ChaCha20 decrypt tool for your hex ciphertext

ChaCha20 Decrypt recovers plaintext from ChaCha20 ciphertext when you give it the key used to encrypt. The cipher is symmetric, so decryption XORs the data with the same keystream and one key serves both directions. Paste the hex that ChaCha20 Encrypt produces: the first 24 characters carry the random nonce, and the tool reads it back automatically. Developers use it to check two ChaCha20 implementations against each other and to read back messages sent as hex.

How to use ChaCha20 Decrypt

  1. Open ChaCha20 Decrypt in the Toolbox101 app.
  2. Paste the encrypt tool's hex output into the Nonce + ciphertext (hex) box. Whitespace around the hex is trimmed.
  3. Enter the key that encrypted the data: 64 hex characters become 32 raw bytes, anything else is hashed with SHA-256 first.
  4. Read the plaintext in the Output box, or click Copy to take it.

Worked example

ChaCha20 Decrypt returns the output below for this combination.

Input

a014356d2b5bdd30c0a81416fbdcb84fb8733826ffe9d77b68a1

Key

000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Output

hello chacha20

Check it yourself: open ChaCha20 Decrypt and enter the same input and key.

Frequently asked questions

What happens when the key does not match the ciphertext?

ChaCha20 carries no integrity check, so a wrong key still decrypts to something, usually text full of replacement characters, with no error raised. Paste the exact key you encrypted with: a 64-character key is read as raw bytes, in upper or lowercase hex, while any other text is hashed first.

Can I decrypt data encrypted by other ChaCha20 libraries?

Only if it is raw ChaCha20 in the RFC 8439 IETF layout with the counter starting at 1 and no authentication tag, with the 12-byte nonce put in front of the ciphertext. Deployments that use ChaCha20-Poly1305, such as TLS 1.3, WireGuard and SSH, append a 16-byte Poly1305 tag and authenticate extra data, so their bytes need preprocessing before they fit this tool's format.

Is the nonce part of the hex input secret?

No. The 12-byte nonce is public by design: it only has to be unique per key, never secret. That is why the encrypt tool puts it in front of the ciphertext and why decrypt reads it from the first 24 characters instead of asking you to retype it.

What does the tool do with malformed hex?

It reports a plain error in the Output box instead of guessing: non-hex characters give an input-is-not-hex message, an odd number of digits is rejected, and fewer than 24 characters, less than one nonce, is called too short. Paste the encrypt tool's full output to avoid all three.

Use ChaCha20 Decrypt now

Runs in your browser. Nothing you type is uploaded.