Decrypt authenticated ciphertext

Verify and decrypt ChaCha20-Poly1305 ciphertext without releasing unauthenticated bytes.

freeworks offlinenothing uploaded
ToolChaCha20-Poly1305 Decrypt
Input
Output
Put this on your own site

The frame below runs the same code as this page, in the reader's own browser. Nothing is sent to us, and nothing is sent to you.

Pick a dark background and the text and panels follow it, so the frame stays readable on a dark page.

Preview

How it works

Poly1305 checks the tag over ciphertext and additional data before ChaCha20 decryption releases plaintext. The same key and nonce are required, and failures return no trusted bytes.

  • Verify-before-release protects modified messages.
  • Nonce uniqueness remains a sender responsibility.

Worked example

Decrypt ChaCha20
Decrypt ChaCha20-Poly1305 ciphertext with the original key
Input
											Input: Gpbz67SogkqhFr2pwuHJSkErsKLZ1j2AZjiD57zPgDCrL5f7CwP6bvmROxkWatMbsuVvs2hlNXDT5E0PA1iwH6mIuMbyIf6lkwbr+RUeUDHXMO/Wg5axAA==
Key: correct horse battery staple
										
Output
												The quick brown fox jumps over the lazy dog.
											

When to use this

Mobile services, token stores, and protocol tests decrypt authenticated data.

Edge cases

  • Changed additional data fails verification.
  • Truncated tag or ciphertext is rejected.
  • Nonce reuse may already have compromised confidentiality.

References